在这种情况下,创建一个完整的Conan配方,并详细检索二进制文件可能是首选方法,因为它是可复制的,并且可以跟踪原始二进制文件。为此,请遵循我们的样品配方:
class HelloConan(ConanFile):name = "hello"version = "0.1"settings = "os", "compiler", "build_type", "arch"def build(self):if self.settings.os == "Windows" and self.settings.compiler == "Visual Studio":url = ("https://<someurl>/downloads/hello_binary%s_%s.zip"% (str(self.settings.compiler.version), str(self.settings.build_type)))elif ...:url = ...else:raise Exception("Binary does not exist for these settings")tools.get(url)def package(self):self.copy("*") # assume package as-is, but you can also copy specific files or rearrangedef package_info(self): # still very useful for package consumersself.cpp_info.libs = ["hello"]
通常,预编译的二进制文件用于不同的配置,因此build() 方法必须实现的唯一任务是将 settings 映射到不同的URLs。
:::info Note
- 这是一个标准的Conan包,即使二进制文件正在从其他地方检索。推荐的方法 是使用
conan create,并在上述配方之外包括一个小型消费项目,在本地测试,然后继续将带有二进制文件的conan upload到 Conan remote,并上传Conan。 - 同样的构建政策适用。如果未创建任何Conan包,并且未定义
--build参数,则配方失败。这种包的典型方法可能是定义build_policy="missing",尤其是当url也在团队控制下时。如果它们是外部的 (在互联网上),最好创建包并将其存储在您自己的Conan服务器上,以便构建不依赖于第三方URL可用。 :::
