conan 2.0 cmake 接口库

问题描述 投票:0回答:1

我有一个 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 吗?

提前感谢您的帮助

c++ cmake interface conan-2
1个回答
0
投票

我只想谈谈设计应该如何运作

我不明白如何组织通用 conanfile.py 来为这样的接口库创建包?我希望它打包所有子库以及全局库(libinterface)?

严格来说,组件并不完全是一个打包的东西,所有库都可以通过包获得,包总是完整的并包含所有组件二进制文件

我如何拥有可以绑定所有子库的东西,而本身又没有一些来源

您必须编写自己的 conanfile.py 来向 pkg 系统解释您的构建系统如何工作,正如该票证中提到的,组件毕竟是一个“高级”用例。

我应该为每个子库都有一个 conanfile.py 吗

不。每个包应该只有 1 个实现 ConanFile 的类

© www.soinside.com 2019 - 2024. All rights reserved.