在我的项目中,我需要为不同的构建配置包含不同的文件,到目前为止,我还无法找到通过CMake实现这一点的方法。
我的build命令如下所示:
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(…)电话。
如果有一种方法可以通过生成器表达式以外的其他方法来实现这一点,那么它也可以工作。
谢谢!
发布于 2019-12-22 22:20:13
单配置生成器使用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,依此类推。
https://stackoverflow.com/questions/59439528
复制相似问题