作者ChampYen (网路黑猫)
看板C_and_CPP
标题Re: [问题] cmake project管理3rd party library
时间Wed Dec 30 10:08:20 2020
※ 引述《Mensholaten (REAL)》之铭言:
: 目前在Linux环境下编写 cmake project (corss compile)
: 会用到的3rd party library是采用事先下载好source code和自己的code同时编译
: 有点苦恼的地方是 不知道该如何用正规作法将library的路径导入至自己的project
: 目录结构大概类似这样
: root
: --- my_src
: --- third_party
: --- aaa
: --- libaaa
: --- ccc
: --- libccc
: find_package只能用在预先安装好的package 没办法用 配置阶段就会fail
: libaaa目录为3rd party library的包含CMakeLists的原生资料夹
: 额外在创建aaa里另外增加CMakeLists
: 里面设定library header/so的路径为编译资料夹(BINARY_SOURCE)的路径
: 并且将这些变数设定为CACHE让其他target include / link 时使用
: 虽然这样做可以正确编译 但其实是额外多动了一些手脚才达成
: 还是想知道有没有更正确的作法?
假设已经知道如何编译 3rd party library (有可能不是使用cmake)
可以先写成 script (这里假设为 build.sh)
对於 cmake 整合步骤有三:
1. 使用 add_custom_command 触发 build.sh, add_custom_command 需有个 output
2. 使用 add_custom_target 建立 add_custom_command 的 output 的 target
3. 使用 add_dependencies 将 my_src 相依於该 target
如此编译 my_src 前就会触发 build script 将 library 编好
细节部份(像是 output 与 include path 设定请自行摸索)
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.217.11.58 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1609294102.A.551.html
※ 编辑: ChampYen (180.217.11.58 台湾), 12/30/2020 10:10:31