C++编译之(4)-进阶-cmake设置install及package配置

C++编译之(4)-进阶-cmake设置install及package配置

引言

上一节我们介绍到了如何使用cmake快速构建项目,实现c/c++的构建自动化;那么项目构建完成后往往需要安装或者打包发布
这一节,我们将介绍,如何用cmake实现安装及打包

相关系列文章内容:
C++编译之(1)-g++单/多文件/库的编译及
C++编译之(2)-make及makefile编译过程
C++编译之(3)-camke/CMakeLists.txt的编译使用

一、cmake设置install安装参数

install的本质核心就是文件拷贝以,此外还有些需要添加或配置环境变量。而我们常用的源码编译后的安装命令是make install,其实这个命令又回到了前两节课Makefile的制作上,make install中的install本质就是Makefile定义的一个目标名称或者就是一个构建标签。这个install标签下包含一系列的安装指令(其实主要就是文件拷贝shell指令)

1、基本的安装配置命令

cmake设置install主要是在CMakeLists.txt配置install命令

set(CMAKE_INSTALL_PREFIX ${CMAKE_SOURCE_DIR}/install/rknn_yolov5_demo)

install(DIRECTORY model DESTINATION ./)

首先安装最重要的就是安装路径的设置CMakeLists.txt通过设置CMAKE_INSTALL_PREFIX定义统一的安装前缀;而具体安装的相对路径则是通过安装指令CMakeLists.txt中的安装指令install中的DESTINATION 关键字。如下所示

# 设置统一安装路径前缀
set(CMAKE_INSTALL_PREFIX /usr/local)
# 定义安装对象及安装路径
install(TARGETS mainPro DESTINATION testPro/bin)

上面的目标文件main安装最终路径为${cmake_install_prefix}/<destination定义的路径>/usr/local/testPro/bin目录下

通常我们会把可执行文件、静态库、动态库会分别放在不同的路径,如下:

文件类型 路径 备注
可执行文件 usr/binusr/local/bin -
静态库*.a usr/libusr/local/lib -
动态库(*.so) usr/libusr/local/lib -
头文件(*.h) usr/includeusr/local/include -

install命令允许我们可以根据文件类型自动地分别指向不同的路径,通过给定RUNTIMELIBRARYARCHIVE,如下所示:

install(TARGETS exec_cmd static_lib shared_lib
            RUNTIME DESTINATION bin # 可执行文件的目标路径
            LIBRARY DESTINATION lib # 共享库的目标路径
            ARCHIVE DESTINATION lib # 静态库的目标路径
         )

而对于头文件,我们通常指定一个安装一整个目录到指定的路径中,如下所示:

install(DIRECTORY "${PROJECT_SOURCE_DIR}/include/"
      DESTINATION ./include/testPro)
2、安装文件

有时,我们需要安装一些特定的非编译的文件(如:某些预定的数据文件),这时我们可以采用下面的命令

install(FILES my.sql DESTINATION ./testPro/db)
3、自定义安装脚本配置

当然,有时我们需要更加自定义的安装,这时,我们可以采用自定义安装脚本命令

install(SCRIPT ${PROJECT_SOURCE_DIR}/testProInstall.sh)
4、如何执行安装?

完成CMakeLists.txt的安装配置编写后,我们还是一样,首先执行cmake构建出Makefile,然后执行make构建项目,最后执行我们经常看到的安装指令make install

# 创建临时构建目录 build
mkdir build
cd build
# 构建Makefile
cmake ..
# 编译
make
# 安装
make install

当然,如果你需要的话,还可以在使用cmake命令构建Makefile文件时,修改这个覆盖上面的安装路径,使新生成的Makefile设置的安装路径是你需要的安装路径


cmake -DCMAKE_INSTALL_PREFIX="../install" ..

当然,我们这里假设你不打算修改直接修改原始的CMakeLists.txt文件中的CMAKE_INSTALL_PREFIX变量

或者你已经执行了cmake .. ,而且执行了make构建命令,还有没办法修改安装路径呢(比较我们都是控制狂,总是想稍微多控制一点点)。我们可以在执行make install时,增加参数,如下所示

<
  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值