cmake(三十八)Cmake之ExternalProject_Add指令

一    背景

1)ExternalProject命令可以很好的'解决'项目中使用'第三方库',提高项目的'可用性'

2)使用 ExternalProject 来管理'第三方'依赖

二    官网参考

三    指令解读

说明: 只'解读'常用的

(1)目录配置

PREFIX:'目录前缀'

DOWNLOAD_DIR:这个比较'重要',建议选个'编译目录同级'的,这样'删掉编译目录'后,就相当于缓存目录了,下次再编译就可以'节约下载'时间 -->only关联'URL下载'

SOURCE_DIR:适用于'非URL'下载方法,将文件'解压'到'该目录'

PREFIX设置'与否'对应'_DIR'的行为

(2)下载

①    第一部分

重点:URL & URL_HASH:包的'下载'与'校验'

思考:多个'URL链接'的时候,这个'URL_HASH'怎么计算的

②    第二部分

重点:'HTTP_USERNAME'、'HTTP_PASSWORD'、'TLS_VERIFY-->整数校验'

思考:如何对'密码'加密

③    第三部分

+++++++++++++'Git 项目克隆'+++++++++++++

重点:GIT_REPOSITORY & GIT_TAG

备注:建议'加上' GIT_SHALLOW,'减少'克隆项目的'体积'

git忽略https认证

gitlab ssl证书更新

fatal: unable to access 'https://xxxxx:xxxxxxxxxx.git/': SSL certificate problem: unable to get local issuer certificate

原因:因为'git服务器的SSL证书'未经过'第三方'机构签署

解决'方法':git config --global http.sslVerify false

备注: --system('系统')、--global('用户')、'无参(特定仓库)'

(3)更新补丁步骤

①  第一部分

PATCH_COMMAND 这个可以'修改后的源文件';比如你可以作为'临时 BUG' 的修改方案,毕竟项目的维护者不一定会'及时'改掉

(4)配置

CONFIGURE_COMMAND: 非 'CMake 项目'的配置参数,可以'执行配置命令'

如: ./configure --prefix=${CMAKE_INSTALL_PREFIX}

补充: 另外需要'配置' BUILD_IN_SOURCE true;

②    第二部分

CMAKE_ARGS:CMake 项目的'配置参数',如 -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}

SOURCE_SUBDIR: dir  -->'相对SOURCE_DIR的路径'

(5)构建

说明: 多数情况'忽略'

(6)安装、测试、输出、目标、其它

备注: 了解有这个功能即可,'基本不用'

INSTALL_COMMAND:多数情况下也可以'略过',执行的'标准 make install' 命令,如果'不是'这个安装命令,可以'修改'

备注:'cmake'的ExternalProject_Add很多情况'不需要'INSTALL_COMMAND

DEPENDS:有'其它依赖'的,可以配置这个选项,它会'理清'这些依赖的'关系',然后'依次编译'

(7)获取项目属性

基于 CMake 的一个包管理工具 vcpkg

四    ExternalProject实践

说明:本次'代码仓'用开源的'gitlab'

(1)在使用使用ExternalProject_Add之前需要导入插件

include(ExternalProject)

(2)常见情形

①    URL下载

++++++++++'external_Project1是自定义的target'++++++++++

ExternalProject_Add(external_Project1
  #1)多个URL,列表的形式-->自动解压缩
  #备注:可远程、可本地
  URL               http://intranet.somecompany.com/artifacts/sauce-2.7.tgz
                    https://www.somecompany.com/downloads/sauce-2.7.zip
  URL_HASH          MD5=d41d8cd98f00b204e9800998ecf8427e
  #2)自签名不做https证书校验
  TLS_VERIFY        false
)

②    GIT下载

include(ExternalProject)
ExternalProject_Add(wzj
  #1)对应仓的地址
  GIT_REPOSITORY    git@172.25.2.100:root/gitlecture.git
  #2)分支、tag、commit_id -->'加上前缀(origin表示默认远程仓库别名)'
  GIT_TAG           origin/release/1.2.3
  #3)不做'git服务器https'证书的校验-->保证自签名ok
  GIT_CONFIG        http.sslVerify=false
  #4)GIT_SHALLOW true -->只能用于'分支'和'tag'-->浅clone,'非整个的历史'-->'体积小'
)

(3)项目讲解

小实践

小实践2

小实践3

参考

CMake之引入外部项目的三种方法

(4)最佳实践

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值