如何在cmake中为DEBUG构建设置GLIBCXX_FORCE_NEW = 1?

时间:2011-12-11 13:56:48

标签: gcc cmake

我需要在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

3 个答案:

答案 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)