我找到了 2 个解决方案:
创建要使用的库列表,然后从需求方法中读取:
localhost$ cat dependencies.list
lib1/0.0.1@user/stable
lib2/1.6.0@user/stable
lib3/1.5.0@suer/stable
请记住,在我们将它们传递给方法的方式中,值不应该有任何引号self.requires()
。现在conanfile.py
按以下方式定义需求方法:
def requirements(self):
try:
with open("/path/to/dependencies.list") as c:
line=c.readline()
while line:
self.requires(line)
line=c.readline()
except Exception as ex:
print(ex)
在 conanfile.py 之外定义需求方法。如果库依赖是有条件的,请使用此方法。
localhost$ cat requires.py
def requires(self):
self.requires("lib1/0.0.1@user/stable")
self.requires("lib2/2.6.0@user/stable")
if self.options.shared:
self.requires("lib3/1.5.0@user/stable")
else:
self.requires("lib3/1.5.1@user/stable")`
然后导入 requires 方法并将其分配给 conan 类中的 requirements 方法,方法如下:
from conans import ConanFile, CMake, tools
from requires import requires
class HelloConan(ConanFile):
name = Hello
version = "0.0.1"
license = "LICENSE"
url = "URL"
description = "libHello, Version 0.0.1"
settings = "os", "compiler", "build_type", "arch"
....
....
现在不要使用 def requirements(self) 定义需求方法,而是这样做:
requirements=requires
....
....
而已 !!conan install
将获取库详细信息,如果在注册表中找到,将安装它们!