CMake如何支持make install

本文介绍了一种在CMake中使用自定义安装脚本来简化软件包安装过程的方法。通过将安装步骤封装到make_install.sh脚本中,并在CMakeLists.txt中调用,可以避免在make install时频繁使用sudo权限,提高了用户权限管理和跨平台部署的灵活性。

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

最简单的方法,使用INSTALL语法,类似

INSTALL(TARGETS taosd RUNTIME DESTINATION bin)
INSTALL(TARGETS taos RUNTIME DESTINATION lib)

这种方法虽然简单,但实际场景通常需要sudo权限。这样要求在make install的时候也需要sudo,如果是root用户还好,否则用户权限方面就很麻烦

将安装脚本写到make_install.sh,然后编写到cmakelist中,就可以通过make install直接调用了,参考

SET(MAKE_INSTALL_SH "${PROJECT_SOURCE_DIR}/packaging/tools/make_install.sh")
INSTALL(CODE "MESSAGE(\"make install script: ${MAKE_INSTALL_SH}\")")
INSTALL(CODE "execute_process(COMMAND chmod 777 ${MAKE_INSTALL_SH})")
INSTALL(CODE "execute_process(COMMAND ${MAKE_INSTALL_SH} ${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR})")
### CMake与`make install`的区别及用途 #### CMake的作用 CMake是一个跨平台的构建系统生成器,用于管理软件编译过程。它通过读取项目中的配置文件(通常是`CMakeLists.txt`),来生成适用于不同环境下的本地构建脚本或工程文件。这使得开发者可以在多种操作系统和工具链之间轻松切换而无需修改源码。 对于给定的例子,在`talker/CMakeLists.txt`中定义了项目的最低CMak版本需求、项目名称以及依赖项等内容[^2]: ```cmake cmake_minimum_required(VERSION 2.8.3) project(talker) find_package(catkin REQUIRED COMPONENTS roscpp std_msgs) catkin_package() include_directories(${catkin_INCLUDE_DIRS}) add_executable(talker talker.cpp) target_link_libraries(talker ${catkin_LIBRARIES}) install(TARGETS talker RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) ``` 这段代码指定了如何找到必要的ROS组件并设置链接库路径;同时也说明了可执行文件的位置及其安装目标位置。 #### `make install`的功能 一旦使用CMake完成了构建系统的配置,并且已经调用了`make`命令进行了实际编译之后,则可以利用`make install`来进行最终的产品部署工作。“安装”的概念在这里指的是将已编译好的二进制文件复制到指定的目标目录下以便于后续的应用程序能够正常访问这些资源。通常情况下,默认会把它们放置在系统的标准路径里如`/usr/local/bin`或其他由用户自定义的地方。 因此,在上述例子中提到的最后一行就是用来指示当执行`make install`时应该怎样处理这个名为`talker`的应用程序——即将其移动至`${CATKIN_PACKAGE_BIN_DESTINATION}`所指向的具体地址处。 #### 实际操作流程对比 - **仅运行`cmake .`** - 解析`CMakeLists.txt`文件。 - 配置好整个项目的结构框架。 - 准备好所有预处理器宏定义和其他辅助信息供接下来可能发生的编译阶段使用。 - **接着执行`make`** - 开始依据之前准备的信息真正意义上地去编译各个模块直至产出完整的应用程序镜像。 - **最后再做一次`sudo make install`** - 把刚才得到的结果正式迁移到预期的工作环境中,使之成为可用状态的一部分。 综上所述,虽然两者都是为了完成同一个目的即让新开发出来的功能能够在计算机内稳定运作起来,但是各自扮演的角色却截然不同:前者负责前期准备工作,后者则专注于后期的实际安置环节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值