使用cmake --install时可执行文件未被安装到指定安装目录
问题根因
执行安装命令后找不到自定义的可执行文件,是因为CMakeLists.txt里没有为你自己声明的executionbackup目标配置安装规则。
CMake不会自动把add_executable定义的构建目标加入安装流程,你现在看到安装目录下生成的bin、include、lib三个文件夹,都是你引入的boost、cpr、nlohmann_json、spdlog这些依赖自带的安装规则生成的,和你自己写的可执行目标没有关系。
修复方案
在CMakeLists.txt中,完成executionbackup目标的声明、链接依赖、头文件配置之后,添加对应的install规则,指定可执行文件的安装路径:
install(TARGETS executionbackup RUNTIME DESTINATION bin )
如果项目后续有自定义头文件、配置文件、资源文件需要随安装包分发,也可以通过补充install规则实现,比如安装公共头文件的参考写法:
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/ DESTINATION include FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp" )
操作验证
修改配置后按如下流程重新构建安装:
- 重新生成构建系统并完成编译
cmake -B build cmake --build build
- 执行原安装命令
cmake --install build --prefix instdir --strip
- 进入
instdir/bin目录即可找到编译生成的executionbackup可执行文件。
注意点
你之前配置的CMAKE_RUNTIME_OUTPUT_DIRECTORY参数,仅控制编译阶段生成的可执行文件在构建目录(也就是build文件夹)下的存放位置,和安装阶段的文件拷贝逻辑完全独立,二者作用不要混淆。
内容的提问来源于stack exchange,提问作者Enz
相关产品推荐
相关产品推荐

