私は最近同じ問題に直面していて、洗練された解決策が見つからなかった。しかし、このコードは、仕事をしていません:
foreach(flag_var
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
STRING (REGEX REPLACE "/RTC[^ ]*" "" ${flag_var} "${${flag_var}}")
endforeach(flag_var)
set_property(TARGET necessary_targets_here APPEND_STRING PROPERTY COMPILE_FLAGS " /RTC1")
あなただけには、次のアプローチしようとし得る1つの構成(例:デバッグ。)のため/RTC
フラグをクリアする必要がある場合:generator expression$<$<CONFIG:Debug>: /RTC1 >
を使用して、ノート、
STRING (REGEX REPLACE "/RTC[^ ]*" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
foreach(target_var necessary_targets_here)
target_compile_options(${target_var} PRIVATE $<$<CONFIG:Debug>: /RTC1>)
endforeach()
をしてくださいデバッグでのみ/RTC1
に展開されます。
FWIW、私は 'CMAKE_C_FLAGS'と' CMAKE_C_FLAGS_DEBUG'でこれを繰り返さなければなりませんでした。私はこれを[SDL2のCMakeLists.txtのパターン](https://github.com/spurious/SDL-mirror/blob/release-2.0.3/CMakeLists.txt#L158)を使ってループで実行しました。 –