如何在Visual Studio的CMake支持下运行INSTALL构建?移动文件后选项消失
在Visual Studio CMake环境中恢复INSTALL选项的解决方案
我懂你遇到的问题了——把源码移到子目录后,VS工具栏CMake菜单里的INSTALL选项突然不见了对吧?这其实是VS的CMake集成对顶层CMakeLists的配置有特定要求,尤其是当install指令放在子目录里的时候。
问题根源
单目录结构下,顶层CMakeLists直接包含了安装逻辑,VS的CMake工具能直接识别并生成INSTALL目标;但把代码移到src子目录后,顶层CMakeLists只负责添加子目录,没有明确的安装相关配置,导致VS无法自动识别出INSTALL目标。
解决步骤
你只需要在顶层CMakeLists.txt里添加以下配置之一,再重新配置CMake即可:
方案1:设置安装前缀路径
在顶层CMakeLists中明确指定安装目录,这会让CMake生成完整的INSTALL目标,VS就能识别到了:
cmake_minimum_required(VERSION 3.9.2) project(test2017) # 指定安装到构建目录下的install文件夹,你也可以改成自定义路径 set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation directory") add_subdirectory("src")
方案2:引入标准安装目录模块
使用GNUInstallDirs模块,它会帮你设置符合行业标准的安装目录变量,同时也能触发VS识别INSTALL目标:
cmake_minimum_required(VERSION 3.9.2) project(test2017) include(GNUInstallDirs) add_subdirectory("src")
最后一步:重新配置CMake
做完上述修改后,在VS的CMake菜单中选择「Cache」→「Delete Cache and Reconfigure」,等待配置完成后,你就能在CMake菜单里看到INSTALL选项了。
验证你的子目录配置
你的src/CMakeLists.txt里的install指令是完全没问题的:
add_executable(hello hello.cpp) install(TARGETS hello DESTINATION "hello/bin")
只要顶层配置正确,这个子目录的安装逻辑会被正常执行。
内容的提问来源于stack exchange,提问作者MiP
相关产品推荐
相关产品推荐

