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)最佳实践

如果你在 CMake 中使用 `add_jar` 命令时遇到了 `Unknown CMake command "add_jar"` 的错误,这通常是因为你使用的 CMake 版本不支持 `add_jar` 命令。 `add_jar` 命令最早在 CMake 2.8.8 版本中引入,因此你需要确保你使用的 CMake 版本至少是 2.8.8 或更高版本才能使用该命令。 如果你使用的是较旧的 CMake 版本,你可以尝试使用另一个命令来编译 Java 源代码并生成 JAR 文件。例如,你可以使用 `execute_process` 命令来调用 `javac` 命令来编译 Java 源代码,并使用 `add_custom_command` 命令来将编译后的类文件打包成 JAR 文件。下面是一个使用 `execute_process` 和 `add_custom_command` 命令编译 Java 源代码的示例 CMakeLists.txt 文件: ``` cmake_minimum_required(VERSION 3.10) project(myproject) # 编译 Java 源代码 execute_process(COMMAND javac MyClass1.java MyClass2.java) # 将编译后的类文件打包成 JAR 文件 add_custom_command(TARGET MyJavaCode POST_BUILD COMMAND jar cvf MyJavaCode.jar MyClass1.class MyClass2.class ) # 将生成的 JAR 文件复制到输出目录 add_custom_command(TARGET MyJavaCode POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/MyJavaCode.jar ${CMAKE_BINARY_DIR}/MyJavaCode.jar ) ``` 在上面的示例中,我们使用 `execute_process` 命令来调用 `javac` 命令来编译 Java 源代码。然后,我们使用 `add_custom_command` 命令来将编译后的类文件打包成 JAR 文件,并将生成的 JAR 文件复制到指定的输出目录中。 希望这可以帮助你解决问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值