本文档翻译自:https://docs.conan.io/en/latest/creating_packages/external_repo.html

    在上一节中,我们从外部存储库中获取了库的源代码。通常打包第三方库就是采用此流程。

    从外部存储库中获取源代码有两种不同的方式:
    1、使用我们在上一节中显示的source() 方法:

    1. from conans import ConanFile, CMake, tools
    2. class HelloConan(ConanFile):
    3. ...
    4. def source(self):
    5. self.run("git clone https://github.com/conan-io/hello.git")
    6. ...

    您还可以使用tools.Git类:

    1. from conans import ConanFile, CMake, tools
    2. class HelloConan(ConanFile):
    3. ...
    4. def source(self):
    5. git = tools.Git(folder="hello")
    6. git.clone("https://github.com/conan-io/hello.git", "master")
    7. ...

    2、使用ConanFile的scm属性: :::success Waring
    这是一项实验性功能,可能会在将来的版本中发生重大更改。 :::

    1. from conans import ConanFile, CMake, tools
    2. class HelloConan(ConanFile):
    3. scm = {
    4. "type": "git",
    5. "subfolder": "hello",
    6. "url": "https://github.com/conan-io/hello.git",
    7. "revision": "master"
    8. }
    9. ...

    Conan 将 clone scm url并检查scm revision。前往创建包文档,了解更多有关捕获远程服务器并提交:scm详细信息。

    source() 方法将在签出过程之后调用,因此您仍然可以使用它来修补某些内容或检索更多源,但在大多数情况下这不是必需的。