使用CMake for Visual Studio 2022筛选配置[重复]

iyr7buue  于 2023-03-12  发布在  其他
关注(0)|答案(1)|浏览(186)

此问题在此处已有答案

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
hec6srdp

hec6srdp1#

您可以使用支持生成器表达式的add_compile_definitions。例如,此表达式将为调试配置添加TestingDebug,为发布添加TestingRelease

add_compile_definitions(Testing$<CONFIG>)

您也可以在生成器表达式中使用条件。这个表达式将为调试配置添加TestingDebug,为任何其他配置添加TestingNotDebug

add_compile_definitions($<IF:$<CONFIG:Debug>,TestingDebug,TestingNotDebug>)

更多详情:https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html

相关问题