Thank you. So I guess I can make it as simple as: if(MSVC) add_library(${_star_lib_name} STATIC "") else() add_library(${_star_lib_name} SHARED "") endif()
I just wondered if there was a more elegant way. On Thu, Nov 7, 2019 at 11:45 AM Petr Kmoch <petr.km...@gmail.com> wrote: > Hi. > > The argument STATIC or SHARED is processed at CMake configure time (that > is, when CMake is executing the add_library() command). However, generator > expressions are only evaluated at generate time, which comes only after all > CMake code is processed. > > Fortunately for you, compiler ID is something that is already known at > configure time, meaning you don't need to use a genex to read it. You can > just do this: > > if(MSVC) > set(LibType STATIC) > else() > set(LibType SHARED) > endif() > add_library( > ${_star_lib_name} > ${LibType} > ... > ) > > (Feel free to modify the if(), use CMAKE_<LANG>_COMPILER_ID ( > https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_COMPILER_ID.html) > etc. as necessary). > > Petr > > On Thu, 7 Nov 2019 at 12:28, David Aldrich <david.aldrich.n...@gmail.com> > wrote: > >> I want to build a shared library for Linux and a static library for >> Windows. So I have tried: >> >> set (_star_lib_name "StdStars") >> >> add_library(${_star_lib_name} >> $<$<CXX_COMPILER_ID:GNU>:SHARED> >> $<$<CXX_COMPILER_ID:MSVC>:STATIC> >> "" >> ) >> >> but that gives me error: >> >> CMake Error at >> C:/SVNProj/zodiac/branches/TRY_TML_CMake_3Oct2019/StarLibs/StdStars/CMakeLists.txt:7 >> (add_library): >> Cannot find source file: >> >> STATIC >> >> Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm >> .hpp .hxx .in .txx >> >> What is the correct way of doing this please? >> -- >> >> Powered by www.kitware.com >> >> Please keep messages on-topic and check the CMake FAQ at: >> http://www.cmake.org/Wiki/CMake_FAQ >> >> Kitware offers various services to support the CMake community. For more >> information on each offering, please visit: >> >> CMake Support: http://cmake.org/cmake/help/support.html >> CMake Consulting: http://cmake.org/cmake/help/consulting.html >> CMake Training Courses: http://cmake.org/cmake/help/training.html >> >> Visit other Kitware open-source projects at >> http://www.kitware.com/opensource/opensource.html >> >> Follow this link to subscribe/unsubscribe: >> https://cmake.org/mailman/listinfo/cmake >> >
-- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: https://cmake.org/mailman/listinfo/cmake