使用Docker,您可以在Linux,Mac OSX或Windows计算机上运行不同的虚拟Linux操作系统。 再现构建环境(例如,自动化CI流程)非常有用。 您可以使用不同的编译器或工具链获得不同的映像,并在每次需要时运行容器。
在此部分中,您将找到带有常见构建工具和编译器以及已安装Conan的预构建映像的列表。
在容器内使用Conan
$ sudo docker run -it --rm conanio/gcc7 /bin/bash
先前的代码将在容器中运行外壳程序。 我们已指定:
- -it:保持STDIN处于打开状态并分配一个伪tty,换句话说,由于要打开bash,因此要键入容器。
- —rm:容器退出后,将其卸下。 帮助保持清洁或硬盘驱动器。
- conanio/gcc7:映像名称,检查可用的Docker映像。
- /bin/bash:要运行的命令
现在,我们在conangcc7容器上运行,可以正常使用Conan了。 在下面的示例中,我们将通过克隆存储库针对OpenSSL从配方中创建一个程序包。 始终建议先从pip升级Conan:
$ sudo pip install conan --upgrade # We make sure we are running the latest Conan version
$ git clone https://github.com/conan-community/conan-openssl
$ cd conan-openssl
$ conan create . user/channel
与Docker容器共享本地文件夹
您可以与容器共享一个本地文件夹,例如一个项目:
$ git clone https://github.com/conan-community/conan-openssl
$ cd conan-openssl
$ docker run -it -v$(pwd):/home/conan/project --rm conanio/gcc7 /bin/bash
- v$(pwd):/home/conan/project:我们正在将当前目录(conan-openssl)映射到容器/home/conan/project目录,因此我们在此共享文件夹中所做的任何更改都将反映在主机中。
# Now we are running on the conangcc7 container
$ sudo pip install conan --upgrade # We make sure we are running the latest Conan version
$ cd project
$ conan create . user/channel --build missing
$ conan remote add myremote http://some.remote.url
$ 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的依赖关系:
$ git clone https://github.com/conan-community/conan-openssl
$ cd conan-openssl
$ docker run -it -v$(pwd):/home/conan/project --rm conanio/gcc49-armv7hf /bin/bash
# Now we are running on the conangcc49-armv7hf container
# The default profile is automatically adjusted to armv7hf
$ cat ~/.conan/profiles/default
[settings]
os=Linux
arch=armv7hf
compiler=gcc
compiler.version=4.9
compiler.libcxx=libstdc++
build_type=Release
[options]
[build_requires]
[env]
$ sudo pip install conan --upgrade # We make sure we are running the latest Conan version
$ cd project
$ conan create . user/channel --build missing
$ conan remote add myremoteARMV7 http://some.remote.url
$ 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 |