Jak mogę ustawić określone flagi kompilatora dla konkretnego celu w określonej konfiguracji kompilacji przy użyciu CMake?
Mam CMakeLists, w których chcę zbudować kilka celów przy użyciu dynamicznej wersji środowiska wykonawczego C, a także kilku innych celów przy użyciu wersji statycznej.
Ponieważ musi to być ustawione dla każdego celu, domyślna metoda ustawieniaCMAKE_CXX_FLAGS_<Config>
nie działa; to zastępuje wszystkie cele.
W tym celu próbowałem czegoś takiego:
<code># @fn set_target_dynamic_crt # @brief Sets the given target to use the dynamic version of the CRT (/MD or # /MDd) # @param ... A list of targets to which this setting should be applied. function( set_target_dynamic_crt ) if ( MSVC ) message (WARNING ${CMAKE_BUILD_TYPE}) if (CMAKE_BUILD_TYPE STREQUAL "Debug") set_target_properties ( ${ARGN} PROPERTIES COMPILE_FLAGS "/MDd" ) else() set_target_properties ( ${ARGN} PROPERTIES COMPILE_FLAGS "/MD" ) endif() endif() endfunction() </code>
Jednak zawsze wybiera wersję wydania (/MD
) i kiedy pytam o typ kompilacji (message
powyżej) Otrzymuję pusty ciąg. (Podejrzewam, że to dlatego, że używam generatora Visual Studio; widziałem więcej niż jedno odniesienie, które mówiCMAKE_BUILD_TYPE
jest tylko dla plików makefile ...)
Jak mogę ustawić opcje kompilacji, takie jak dla każdego celu?