首页 > 解决方案 > 柯南:聚合多个包以独立使用

问题描述

我目前正在使用柯南作为我的主要项目的“帮助工具”:我创建了一个 conanfile.py,它构建了我所有的依赖项并将它们导入到当前文件夹中。最终的目标是将此文件夹归档并重新分发到我们的多台机器上,然后告诉 CMake 一切都在其中。

然而,这里有个问题:我希望这个档案不依赖于柯南。我们的 CMakeLists.txt 正在使用 Find_Package(),我真的希望它能够以非侵入性方式工作。到目前为止,我已经设法让一些工作,但是,我的主要问题是 CMake 集成。

以下是我想要创建存档的方式:

mkdir build
conan install <path to my conanfile> -if build
tar cf archive.tar build

到目前为止,我已经成功地将所有依赖项正确复制到正确的目录中(build/bin 包含所有二进制文件,build/include 所有包含等等)

我现在唯一的问题是使用 CMake。我尝试使用 cmake_paths 和 cmake_find_package 生成器,但它们都指向我机器上的柯南缓存

然后我尝试了部署生成器,这似乎非常接近我想要实现的目标。但是,我无法弄清楚如何从我刚刚部署到的目录中生成 cmake 文件。

我找到了 generate() 方法,但我没有取得太大的成功。

我需要在外部实施吗?喜欢修补由 cmake 生成器创建的文件?还是有更清洁的方法?

谢谢

编辑:只是想澄清一下:除了简单地构建我的依赖项之外,我不想将柯南用于其他任何事情。它安装在我们的主服务器上,该服务器托管将构建二进制文件的 gitlab CI/CD。它不被其他任何东西使用。

标签: c++cmakeconan

解决方案


柯南的联合创始人詹姆斯在这里回答了这个问题:https ://github.com/conan-io/conan/issues/9874

基本上:

  • 使用 CMakeDeps 生成器代替 cmake / cmake_find_package
  • 在安装时从主 conanfile.py 的 generate() 方法中修补生成的 cmake 配置文件
  • 相应地编辑食谱(但大多数时候应该没问题)

推荐阅读