나는 최근에 같은 문제에 직면했고 우아한 해결책을 찾지 못했습니다.
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")
당신은 단지 하나 개의 구성 (예 : 디버그.) 다음과 같은 접근하려고 할 수 있습니다에 대한 /RTC
플래그를 취소해야하는 경우 :
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()
주세요, 노트 generator expression$<$<CONFIG:Debug>: /RTC1 >
를 사용하지만이 코드는 일을 디버그에서만 /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)을 사용하여 반복했다. –