使用Docker,您可以在Linux,Mac OSX或Windows计算机上运行不同的虚拟Linux操作系统。 再现构建环境(例如,自动化CI流程)非常有用。 您可以使用不同的编译器或工具链获得不同的映像,并在每次需要时运行容器。
在此部分中,您将找到带有常见构建工具和编译器以及已安装Conan的预构建映像的列表。

在容器内使用Conan

  1. $ sudo docker run -it --rm conanio/gcc7 /bin/bash

先前的代码将在容器中运行外壳程序。 我们已指定:

  • -it:保持STDIN处于打开状态并分配一个伪tty,换句话说,由于要打开bash,因此要键入容器。
  • —rm:容器退出后,将其卸下。 帮助保持清洁或硬盘驱动器。
  • conanio/gcc7:映像名称,检查可用的Docker映像。
  • /bin/bash:要运行的命令

现在,我们在conangcc7容器上运行,可以正常使用Conan了。 在下面的示例中,我们将通过克隆存储库针对OpenSSL从配方中创建一个程序包。 始终建议先从pip升级Conan:

  1. $ sudo pip install conan --upgrade # We make sure we are running the latest Conan version
  2. $ git clone https://github.com/conan-community/conan-openssl
  3. $ cd conan-openssl
  4. $ conan create . user/channel

与Docker容器共享本地文件夹

您可以与容器共享一个本地文件夹,例如一个项目:

  1. $ git clone https://github.com/conan-community/conan-openssl
  2. $ cd conan-openssl
  3. $ docker run -it -v$(pwd):/home/conan/project --rm conanio/gcc7 /bin/bash
  • v$(pwd):/home/conan/project:我们正在将当前目录(conan-openssl)映射到容器/home/conan/project目录,因此我们在此共享文件夹中所做的任何更改都将反映在主机中。
    1. # Now we are running on the conangcc7 container
    2. $ sudo pip install conan --upgrade # We make sure we are running the latest Conan version
    3. $ cd project
    4. $ conan create . user/channel --build missing
    5. $ conan remote add myremote http://some.remote.url
    6. $ conan upload "*" -r myremote --all

使用图像交叉构建软件包

您可以使用可用的docker映像(后缀-i386,-armv7和-armv7gh)为这些平台生成软件包。
例如,armv7映像安装了用于Linux ARM的工具链,并使用环境变量CC和CXX声明为主编译器。 同样,默认的柯南配置文件(〜/ .conan / profiles / default)进行了调整,以声明正确的拱门(armv7 / armv7hf)。
此过程将在docker内部运行本机编译,因此我们不能说它是真正的交叉构建,但是如果我们在交叉编译方面进行讨论:docker服务正在您的计算机(构建平台)中运行,则docker映像(即 主机平台)以生成二进制文件。 要阅读有关Conan的实际交叉编译的信息,我们在文档中有专门的部分:交叉构建。
只需几个步骤即可完成软件包的构建和上载,以及所有缺少的对Linux / armv7hf的依赖关系:

  1. $ git clone https://github.com/conan-community/conan-openssl
  2. $ cd conan-openssl
  3. $ docker run -it -v$(pwd):/home/conan/project --rm conanio/gcc49-armv7hf /bin/bash
  4. # Now we are running on the conangcc49-armv7hf container
  5. # The default profile is automatically adjusted to armv7hf
  6. $ cat ~/.conan/profiles/default
  7. [settings]
  8. os=Linux
  9. arch=armv7hf
  10. compiler=gcc
  11. compiler.version=4.9
  12. compiler.libcxx=libstdc++
  13. build_type=Release
  14. [options]
  15. [build_requires]
  16. [env]
  17. $ sudo pip install conan --upgrade # We make sure we are running the latest Conan version
  18. $ cd project
  19. $ conan create . user/channel --build missing
  20. $ conan remote add myremoteARMV7 http://some.remote.url
  21. $ conan upload "*" -r myremoteARMV7 --all

可用的Docker映像

我们提供了一组映像,其中安装了最常用的编译器,可用于为不同的配置文件生成Conan软件包。 可在Conan Docker Tools存储库中找到其dockerfile。 :::success Waring
下面列出的图像用于生成开源库软件包,我们不能保证任何稳定性。 我们强烈建议在生产环境中使用自己生成的映像,并以这些dockerfile作为参考。 :::

GCC image

Version Target Arch
conanio/gcc49 (GCC 4.9) x86_64
conanio/gcc49-i386 (GCC 4.9) x86
conanio/gcc49-armv7 (GCC 4.9) armv7
conanio/gcc49-armv7hf (GCC 4.9) armv7hf
conanio/gcc5-armv7 (GCC 5) armv7
conanio/gcc5-armv7hf (GCC 5) armv7hf
conanio/gcc5 (GCC 5) x86_64
conanio/gcc5-i386 (GCC 5) x86
conanio/gcc5-armv7 (GCC 5) armv7
conanio/gcc5-armv7hf (GCC 5) armv7hf
conanio/gcc6 (GCC 6) x86_64
conanio/gcc6-i386 (GCC 6) x86
conanio/gcc6-armv7 (GCC 6) armv7
conanio/gcc6-armv7hf: (GCC 6) armv7hf
conanio/gcc7-i386 (GCC 7) x86_64
conanio/gcc7 (GCC 7) x86
conanio/gcc7-armv7 (GCC 7) armv7
conanio/gcc7-armv7hf (GCC 7) armv7hf

Clang images

Version Target Arch
conanio/clang38 (Clang 3.8) x86_64
conanio/clang39-i386 (Clang 3.9) x86
conanio/clang39 (Clang 3.9) x86_64
conanio/clang40-i386 (Clang 4) x86
conanio/clang40 (Clang 4) x86_64
conanio/clang50-i386 (Clang 5) x86
conanio/clang50 (Clang 5) x86_64