我需要在cmake中为DEBUG构建设置环境变量GLIBCXX_FORCE_NEW = 1.
在cmake文档中,我只能找到:
CMAKE_CXX_COMPILER
CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_RELWITHDEBINFO
答案 0 :(得分:5)
环境变量GLIBCXX_FORCE_NEW
仅影响运行时编译程序的行为(请参阅gcc documentation)。在程序的编译期间(例如,通过设置CMAKE_CXX_FLAGS)将其添加为预处理器定义将不起作用。
使用CMake,您可以设置一个环境变量,该变量仅影响CMake tests的构建目标的运行时。以下命令添加对DEBUG构建有效的测试,该测试将运行带有GLIBCXX_FORCE_NEW
变量集的可执行文件:
add_test(NAME MyTest CONFIGURATIONS Debug COMMAND MyExecutable)
set_tests_properties(MyTest PROPERTIES ENVIRONMENT "GLIBCXX_FORCE_NEW=1")
答案 1 :(得分:1)
您想要CMAKE_BUILD_TYPE
。
您可以使用if(CMAKE_BUILD_TYPE STREQUAL "Debug")
检查构建类型。
另外,请注意STREQUAL区分大小写,因此您可能需要在检查之前string(UPPERCASE ...)
变量。
答案 2 :(得分:0)
为什么需要构建的“环境变量”?如果只想为调试版本设置编译器或预处理器标志,请使用CMAKE_CXX_FLAGS_DEBUG,例如
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DGLIBCXX_FORCE_NEW=1")
不测试if(CMAKE_BUILD_TYPE STREQUAL "Debug")
,它不适用于所有非Makefile CMake生成器(OSX with Xcode,Windows with Visual Studio)