cmake之install总结(指定安装文件和安装位置)

本文介绍了如何使用CMake的install()命令来指定安装规则,包括将可执行文件、库文件和头文件安装到不同的目录。在CMakeLists.txt中添加install命令并设置DESTINATION,然后通过cmake指令或调整CMAKE_INSTALL_PREFIX来指定安装位置。提供了四种指定安装路径的方法,包括修改cmake文件、命令参数、使用ccmake和make命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

cmake不仅可以构建可执行文件,还可以安装。使用CMake,我们可以使用install()命令指定安装规则。只需要指定安装位置和待安装的目标文件,十分简单。

以cmake官方教程为例(3.24版本,Step4:https://cmake.org/cmake/help/v3.24/guide/tutorial/Installing%20and%20Testing.html

可以分为2步:1.在CMakeLists.txt文件中加入install命令;2.使用cmake指令指定安装位置

在CMakeLists.txt文件中加入install命令

首先在子路径下的CMakeLists.txt文件中加入:

install(TARGETS MathFunctions DESTINATION lib)
install(FILES MathFunctions.h DESTINATION include)

这两行的作用是将MathFunctions安装到lib路径下,将MathFunction.h安装到include路径下。

然后在根路径下的CMakeLists.txt文件中加入:

install(TARGETS Tutorial DESTINATION bin)
install(FILES "${PROJECT_BINARY_DIR}/TutorialConfig.h"
DESTINATION include
)

这两行的作用是将Tutorial安装到bin路径下,将TutorialConfig.h安装到include路径下。

从CMakeLists.txt的前文可知,Tutorial是可执行文件,MathFunctions是库文件,TutorialConfig.h和MathFunction.h是头文件,因此分别安装到bin目录、lib目录和include目录,符合通常规则。

使用cmake指令指定安装位置

如教程中所说,首先使用cmake命令,构建cmake项目。然后可以选择官方安装方式,使用cmake --install .命令安装,命令中可以设定prefix,以指定安装位置。

如果是之前的cmake版本,cmake不支持install选项的话,可以使用make install代替。

PS:怎么指定安装路径的各种方法

方法1:修改cmake文件。在cmake文件中加入set(CMAKE_INSTALL_PREFIX "../install")。

方法2:修改cmake命令参数。cmake -DCMAKE_INSTALL_PREFIX="../install"。

方法3:使用ccmake调整CMAKE_INSTALL_PREFIX。

方法4(不推荐):使用make命令参数。make DESTDIR=absolute/path install。

总结

文末总结了各种指定安装路径的方法,当不想把文件安装到默认位置的时候,可以参考。

### 关于 `sudo cmake install` 的使用方法 在执行 `sudo cmake install` 命令时,通常会触发 CMake 配置中的安装目标(install target),将构建完成的文件复制到指定的目标目录。此命令的具体行为取决于项目的 CMakeLists.txt 文件中定义的内容。 #### 安装路径设置 默认情况下,CMake 使用 `/usr/local/` 作为安装根目录。如果希望更改安装路径,可以在运行 `cmake` 配置阶段通过 `-DCMAKE_INSTALL_PREFIX=<path>` 参数来指定自定义路径[^1]。例如: ```bash cmake -DCMAKE_INSTALL_PREFIX=/opt/myproject .. ``` 上述命令会在后续调用 `make install` 或 `sudo cmake --build . --target install` 时,将生成的文件安装至 `/opt/myproject` 路径下。 #### 执行权限问题 由于某些系统目录(如 `/usr/local/`)可能需要管理员权限才能写入数据,因此可以使用 `sudo` 提升权限后再执行安装操作。然而,在实际开发过程中推荐先调整安装路径为无需特权访问的位置,从而避免频繁使用 `sudo` 引发的安全隐患。 #### 解决常见错误的方法 当尝试运行 `sudo cmake install` 出现失败情况时,请按照以下方式排查并解决问题: - **确认依赖项已正确安装** 确保所有必要的软件包已被成功部署。对于基于 Debian 的发行版来说,可以通过如下指令一次性更新以及安装所需工具链: ```bash sudo apt-get update -y && sudo apt-get upgrade -y; sudo apt-get install -y curl git unzip xz-utils zip libglu1-mesa ``` - **验证 build 过程无误** 在发起最终安装之前,请再次检查整个编译流程是否存在异常状况。利用下面这条语句重新生成二进制产物,并观察终端反馈信息是否有任何警告或者致命性的提示存在。 ```bash make clean && make all ``` - **查阅日志详情定位原因** 一旦发现有特定类型的报错发生,则需仔细阅读屏幕打印出来的详细描述文字串流,进而依据其指示采取相应措施加以修正处理。比如缺少某个库链接支持的话就应当补充关联该资源;若是版本冲突所致则考虑升级降级适配等等不同策略去应对处置。 另外值得注意的一点是,如果你正在跨平台环境下作业(即借助 Windows 上面的 Visual Studio 来远程调试管理 Linux 平台上的工程),那么务必参照官方文档指南合理设定好各项参数选项以便顺利完成集成工作[^2]。 ```python # 示例 Python脚本片段展示如何动态修改环境变量适应多场景需求 import os def set_env_variables(): os.environ['PATH'] += ":/new/path" return True if __name__ == "__main__": result = set_env_variables() if not result: raise Exception("Failed to setup environment variables.") ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值