我有一个交叉编译器cmake项目,该项目依赖于恰好也使用cmake的独立项目中的库:
/myProject/CMakeLists.txt (uses cross-compiler)
/anotherProject/CMakeLists.txt (platform-agnostic)
Run Code Online (Sandbox Code Playgroud)
anotherProject可以完全单独构建。它根本不了解myProject。
现在,anotherProject有很多我需要的模块,例如:
anotherProject/A/CMakeLists.txt (produces static lib A.a)
anotherProject/B/CMakeLists.txt (produces static lib B.a)
etc
Run Code Online (Sandbox Code Playgroud)
构建myProject时,我想构建并链接到anotherProject / A和anotherProject / B,以生成共享库myproject.so。如果可能,我想利用anotherProject的现有cmake-ness,而不是从myProject手动获取其各种源集。
用cmake实现此目的的正确方法是什么?我觉得我缺少明显的东西。
例如,如果myProject只是anotherProject下的子目录,或者如果存在可以同时引用myProject和anotherProject的顶级CMakeLists.txt,这将很简单。但是我追求的都不是。我知道我可以构建另一个项目并将其库导出到一个众所周知的位置,然后从myProject引用导出目录-但我也想避免这种设置。
解决方案是使用CMake 包。
基本上,在 anotherProject 中,您可以制作一个 CMake 配置文件,在其中设置 myProject 使用的变量(例如,包含目录、库列表、编译标志...),甚至目标。
然后,在 myProject 中,您使用该find_package()机制,以便 CMake 找到此配置文件并导入当前项目中的变量/目标。
CMake wiki 上有一个教程。
| 归档时间: |
|
| 查看次数: |
1731 次 |
| 最近记录: |