首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake:如何为不同的构建配置设置不同的变量值?

CMake:如何为不同的构建配置设置不同的变量值?
EN

Stack Overflow用户
提问于 2019-12-22 04:13:11
回答 1查看 405关注 0票数 0

在我的项目中,我需要为不同的构建配置包含不同的文件,到目前为止,我还无法找到通过CMake实现这一点的方法。

我的build命令如下所示:

代码语言:javascript
复制
cmake -DCMAKE_CONFIGURATION_TYPES=Debug2017;Debug2018;Debug2019;Release2017;Release2018;Release2019 -G"Visual Studio 14 2015" #and so on

在我的CMakeLists.txt中,我想要的东西看起来像:

代码语言:javascript
复制
if ($<$<CONFIG:Debug2017>: )
    set (MAYA_DIRECTORY "C:/Program Files/Autodesk/Maya2017" )>
endif()
if ($<$<CONFIG:Debug2018>: )
    set (MAYA_DIRECTORY "C:/Program Files/Autodesk/Maya2018" )>
endif()
#and so on; obviously script above don't work. I posted it just as an example of what I want to achieve

变量MAYA_DIRECTORY稍后用于设置用于include_directories(…)的不同其他变量和link_directories(…)电话。

如果有一种方法可以通过生成器表达式以外的其他方法来实现这一点,那么它也可以工作。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-22 22:20:13

单配置生成器使用CMAKE_BUILD_TYPE是可能的,但是对于像Visual Studio这样的多配置生成器来说,这种策略是失败的。这混淆了在配置时和构建时发生的事情。活动配置在构建时发生。

因此,每个构建配置都需要一个单独的MAYA_DIRECTORY。然后,您需要将每个Maya包含到构建中(我猜它们是外部项目或其他什么)。然后,需要使用生成器表达式来拾取要在可执行文件中使用的Maya。

应该是这样的。

代码语言:javascript
复制
target_include_directories(myApp PRIVATE
  $<$<CONFIG:Debug2016>:${MAYA_2016_INCS}>
  $<$<CONFIG:Debug2017>:${MAYA_2017_INCS}> )

target_link_libraries(myApp PRIVATE
  $<$<CONFIG:Debug2016>:${MAYA_2016_LIBS}>
  $<$<CONFIG:Debug2017>:${MAYA_2017_LIBS} )

仅供参考,如果您要创建多个配置类型,则需要正确地设定它们的种子。也就是说,确保使用调试标志创建*_Debug2017,依此类推。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59439528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档