本文档翻译自:https://docs.conan.io/en/latest/creating_packages/existing_binaries.html#downloading-and-packaging-pre-built-binaries

    在这种情况下,创建一个完整的Conan配方,并详细检索二进制文件可能是首选方法,因为它是可复制的,并且可以跟踪原始二进制文件。为此,请遵循我们的样品配方:

    1. class HelloConan(ConanFile):
    2. name = "hello"
    3. version = "0.1"
    4. settings = "os", "compiler", "build_type", "arch"
    5. def build(self):
    6. if self.settings.os == "Windows" and self.settings.compiler == "Visual Studio":
    7. url = ("https://<someurl>/downloads/hello_binary%s_%s.zip"
    8. % (str(self.settings.compiler.version), str(self.settings.build_type)))
    9. elif ...:
    10. url = ...
    11. else:
    12. raise Exception("Binary does not exist for these settings")
    13. tools.get(url)
    14. def package(self):
    15. self.copy("*") # assume package as-is, but you can also copy specific files or rearrange
    16. def package_info(self): # still very useful for package consumers
    17. self.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可用。 :::