2015-10-05 105 views
0

如何在我的CMake文件中将“基本运行时检查”设置为“默认”?将编译器选项设置为默认值在CMake中

在CMake中有以下行,我可以将它设置为Release模式下的RTC,但我真正需要的是将其设置为Default。

set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /RTCs") 

回答

1

我找到了解决方案。

使用宏删除当前编译器选项。

macro(RemoveDebugCXXFlag flag) 
    string(REPLACE "${flag}" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") 
endmacro() 

macro(RemoveReleaseCXXFlag flag) 
    string(REPLACE "${flag}" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}") 
endmacro() 

message(${CMAKE_CXX_FLAGS_DEBUG}) # Print Debug Flags Before Change 
RemoveDebugCXXFlag("/RTC1") 

message(${CMAKE_CXX_FLAGS_DEBUG}) # Print Debug Flags After Change 

message(${CMAKE_CXX_FLAGS_RELEASE}) # Print Release Flags Before Change 
RemoveReleaseCXXFlag("/RTC1") 
message(${CMAKE_CXX_FLAGS_RELEASE}) # Print Release Flags After Change 

问候

+1

只是想通过使变量名称的一部分,也是可变的建议更宽泛的版本:'的foreach(配置$ {} CMAKE_CONFIGURATION_TYPES)'| '字符串(TOUPPER“$ {config}”CONFIG)'| 'string(REGEX REPLACE)/ RTC [A-Za-z0-9] *“”“CMAKE_CXX_FLAGS _ $ {CONFIG}”$ {CMAKE_CXX_FLAGS _ $ {CONFIG}}“)'| 'message(“$ {CMAKE_CXX_FLAGS _ $ {CONFIG}}”)'| 'endforeach()'。 – Florian

+0

感谢您的建议Florian –