此问题在此处已有答案:
CMAKE_BUILD_TYPE is not being used in CMakeLists.txt(3个答案)
Detect build type (debug/release) in visual studio when using CMake(1个答案)
13天前关闭。
你好,我尝试添加配置特定的定义到我的项目,但它似乎没有工作的方式,我期望它。我的代码工作正常,如果我指定配置时,我运行cmake,但这使得它有点奇怪,因为如果我有类似下面的代码,并指定-DCMAKE_BUILD_TYPE=调试,它将添加'TestingDebug'定义到我在visual studio中的所有配置,这不是我想要的。
if (CMAKE_BUILD_TYPE STREQUAL Debug)
add_definitions(-DTestingDebug)
endif()
if (CMAKE_BUILD_TYPE STREQUAL Release)
add_definitions(-DTestingRel)
endif()
有没有一种方法可以一次生成所有这些,这样当我在visual studio中更改配置时,它将具有正确的定义?
我试过使用cmake --build {builddir} --config {config}
命令,因为我读到过一些地方,当你试图构建多配置工具时,你应该使用它。下面的代码是我在我的项目中使用的,但它似乎也不起作用,如果我只是用错了,或者有其他我需要做的事情,请idk。
cmake -S ../ -B ../Build/
cmake --build ../Build/ --config Debug
cmake --build ../Build/ --config Release
1条答案
按热度按时间hec6srdp1#
您可以使用支持生成器表达式的
add_compile_definitions
。例如,此表达式将为调试配置添加TestingDebug
,为发布添加TestingRelease
。您也可以在生成器表达式中使用条件。这个表达式将为调试配置添加
TestingDebug
,为任何其他配置添加TestingNotDebug
:更多详情:https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html