在我的项目中,我需要为不同的构建配置包括不同的文件,到目前为止,我一直无法找到通过CMake做到这一点的方法。
我的构建命令如下所示:
cmake -DCMAKE_CONFIGURATION_TYPES=Debug2017;Debug2018;Debug2019;Release2017;Release2018;Release2019 -G"Visual Studio 14 2015" #and so on
在我的CMakeLists.txt中,我想要的内容如下:
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(…)调用的其他变量。
如果除了生成器表达式之外,还有其他方法也可以使用。
谢谢!
答案 0 :(得分:1)
你不知道。单个配置生成器可以使用CMAKE_BUILD_TYPE
,但是对于像Visual Studio这样的多配置生成器,该策略将失败。这混淆了在配置时和构建时发生的情况。活动配置在构建时进行。
因此,每个构建配置都需要单独的MAYA_DIRECTORY
。然后,您需要将每个Maya都包含到构建中(我猜它们是外部项目或其他东西)。然后,您需要使用生成器表达式来选择要在可执行文件中使用的Maya。
就是这样。
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
等。