我们计划为我们的 C++ 代码设置 conan 存储库。我们只想向开发人员公开依赖项列表(lib/version@user/channel),而不是我们放在 conanfile.py 中的逻辑 我们正在计划这样做,因为我们正在创建一个围绕 conan 的包装器,它将有几个逻辑和检查。此包装器将向用户公开。他们不需要知道详细的逻辑和构建步骤。

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

最佳答案

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

  • 需要对.list文件进行exports,因为在缓存中使用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/

    10-11 23:15