柯南:聚合多个包独立使用

Conan: aggregate multiple packages to be used indepentendly

我目前正在使用 Conan 作为我的主要项目的“辅助工具”:我创建了一个 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。它没有被其他任何东西使用。

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

基本上:

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