c++ - 将依赖列表(需求)与 conanfile.py 分开

标签 c++ dependency-management conan

我们计划为我们的 C++ 代码建立柯南存储库。我们只想向开发人员公开依赖项列表 (lib/version@user/channel),而不是我们放在 conanfile.py 中的逻辑检查。这个包装器将暴露给用户。他们不需要知道详细的逻辑和构建步骤。

有没有办法在 conanfile.py 之外实现需求(依赖列表),并让用户可以使用该列表,以便他们可以选择他们想要使用的库版本 - 类似的东西(不一样,虽然)到 Maven 世界中的 pom.xml?

最佳答案

@amit-jaim 的上述回答非常好。我想指出一些进一步的细节:

  • 有必要exports.list文件,因为在缓存中使用conanfile时也会用到它

  • conanfile 可以做得更像 pythonic

代码可能是这样的:

from conans import ConanFile, load


class HelloConan(ConanFile):
    name = "Hello"
    version = "0.1"
    exports = "deps.list"

    def requirements(self):
        for r in load("deps.list").splitlines():
            self.requires(r)

如果您希望能够从当前 conanfile 以外的目录运行 conan create,则需要获取 conanfile 的当前位置,例如:

def requirements(self):
   f = os.path.join(os.path.dirname(__file__), "deps.list")
   for r in load(f).splitlines():
      self.requires(r)

关于c++ - 将依赖列表(需求)与 conanfile.py 分开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51823483/

相关文章:

bazel - 如何在 Bazel 中使用柯南

c++ - 在 C++ mfc 对话框中帮助

maven - 在 Maven 中获取给定组和版本的所有 Artifact

c++ - 使用 C++ 服务器制作 Websocket

java - 如何从 Intellij Maven 项目中永久删除模块?

java - 我可以使用 Gradle 强制确定类路径中依赖项的顺序吗?

jenkins - 与 Jenkins 一起使用时的 Conan 本地缓存

c++ - 使用 conan 和 cmake 选择文件

c++ - 确定 minimax tic-tac-toe 中的正确位置

c++ - 使用 MySQL C API 和 C++ 获取 MySQL 数据库表中的行