【发布时间】:2021-12-12 01:02:45
【问题描述】:
我目前正在使用柯南作为我的主要项目的“帮助工具”:我创建了一个 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。它不被其他任何东西使用。
【问题讨论】:
-
是的,如果您通过导入/部署或手动将所有依赖项提取到不同的位置,则这些文件不再是 Conan 包。这不是部署(dll、可执行文件)的问题,或者如果您的构建系统知道消费者裸库。但是你错过了柯南提供给你的所有信息。我建议开发将包留在缓存中,并提取 exe 和共享库和数据以在柯南之外部署
-
@drodri 是的,我明白了。但是为了开发,我经常需要在新机器上构建软件。我不想再次安装柯南并设置我的所有软件包(我们没有遥控器。我只是使用柯南来构建档案)。我只是想找到一种方法来生成 cmake 配置文件部署后。现在我想起来了,这相当于在依赖项上调用
cmake install <build>...也许这是一种可能性? -
@drodri 这很令人沮丧,因为这似乎是用户的合理需求,我觉得我离让它工作如此接近,我觉得我只是错过了一点点洞察力。还;我每隔一段时间就严格使用柯南来建立档案。如果有必要,我不介意重新构建包。
-
您是否正在寻找一种方法来共享已构建的依赖项,以便其他构建机器不必重新构建它们?
-
@John 是的!柯南似乎是一个非常好的工具,因为我希望能够指定特定的版本和选项。