C ランタイムの動的バージョンを使用していくつかのターゲットを構築し、静的バージョンを使用して他のいくつかのターゲットを構築したい CMakeLists があります。
これはターゲットごとに設定する必要があるため、デフォルトの設定方法はCMAKE_CXX_FLAGS_<Config>
機能しません。これはすべてのターゲットに対してオーバーライドされます。
そのために、次のようなことを試しました。
# @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()
ただし、これは常にリリース バージョン ( /MD
) を選択し、ビルド タイプ (message
上記の呼び出し) を照会すると、空の文字列が返されます。(これは、私が Visual Studio ジェネレーターを使用しているためだと思われます。CMAKE_BUILD_TYPE
メイクファイル専用であるというリファレンスを複数見てきました...)
ターゲットごとにこのようなコンパイル オプションを設定するにはどうすればよいですか?