我有一个 CMake 项目,它创建一个接口库(仅显示 CMakeLists.txt 的关键部分):
...
add_subdirectory(part1)
add_subdirectory(part2)
add_subdirectory(part3)
add_library(part_interface INTERFACE)
target_link_libraries(part_interface INTERFACE
part1
part2
part3
)
...
每个子目录 [lib1、lib2、lib3] 都包含一个 CMakeLists.txt,允许构建不同的库。
我不明白如何组织通用 conanfile.py 来为这样的接口库创建包?我希望它打包所有子库以及全局库(libinterface)?
我在文档中看到了组件的概念,但我不明白如何拥有可以绑定所有子库而本身没有一些源的东西?我应该为每个子库都有一个 conanfile.py 吗?
提前感谢您的帮助
我只想谈谈设计应该如何运作
我不明白如何组织通用 conanfile.py 来为这样的接口库创建包?我希望它打包所有子库以及全局库(libinterface)?
严格来说,组件并不完全是一个打包的东西,所有库都可以通过包获得,包总是完整的并包含所有组件二进制文件。
我如何拥有可以绑定所有子库的东西,而本身又没有一些来源
您必须编写自己的 conanfile.py 来向 pkg 系统解释您的构建系统如何工作,正如该票证中提到的,组件毕竟是一个“高级”用例。
我应该为每个子库都有一个 conanfile.py 吗
不。每个包应该只有 1 个实现 ConanFile 的类