【发布时间】:2021-08-19 05:29:51
【问题描述】:
在我的项目中,我想根据当前的配置类型设置安装目标的路径:
project(mylib VERSION 1.0)
set(INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/mylib/${PROJECT_VERSION}/${CMAKE_BUILD_TYPE})
install(TARGETS mylib ARCHIVE DESTINATION ${INSTALL_DIR})
我得到的是:
C:/install/mylib/1.0/mylib.lib
我不明白为什么 CMAKE_BUILD_TYPE 是空的。 看似微不足道的情况,但我已经浪费了一个小时来谷歌搜索解决方案。任何想法? 我正在对 Visual Studio 自动生成的项目进行安装,但我也从命令行尝试过。两者都不起作用:
cmake -DCMAKE_INSTALL_PREFIX="C:\install"
-DCMAKE_GENERATOR_PLATFORM=Win32 .. cmake --install . --config 发布
【问题讨论】:
-
“我已经浪费了一个小时来搜索解决方案” - 只需搜索“CMAKE_BUILD_TYPE empty Visual Studio”即可获得例如that question:Visual Studio 是多配置生成器,它不使用 CMAKE_BUILD_TYPE 变量。
-
Visual Studio(和其他多配置生成器)支持generator expression
$<CONFIG>,它表示构建类型。由于install命令的DESTINATION参数支持生成器表达式(请参阅documentation),因此您可以在其中使用$<CONFIG>:set(INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/mylib/${PROJECT_VERSION}/$<CONFIG>)。
标签: visual-studio cmake