应该如何处理 docker 容器中的 C++ 库?

问题描述 投票:0回答:1

我目前正在为我的 C++ 项目创建 docker 容器。我的设置使用 CPM 查找本地库,然后再下载(如果找不到)。对于 docker,我看过的大多数 C++ 示例都使用 apt-get、git 和 wget 来安装库。但如果我这样做,我基本上最终会得到两个依赖管理系统。

如果我只使用 docker 进行构建和部署,那么这不会是问题,因为我可以让 CPM 在构建时处理依赖关系。不过我也打算使用docker进行开发。因此,最好将依赖项作为开发映像中的一层。

那么我应该使用另一个更适合 Docker 的包管理系统(Conan、Vcpkg)吗?找到一些方法从 docker 文件调用 CPM cmake 代码而无需构建?也许使用持久卷来存储库旅馆?或者只是使用 apt-get 作为我的开发映像并让 CPM 处理构建和部署映像?

docker dependency-management
1个回答
0
投票

是的,我鼓励您为此使用成熟的 C++ 包管理系统,例如 Conan 或 Vcpkg。他们提供的软件包已经在所有主要平台上进行了测试,这将为您节省相当多的潜在挫败感,如果您有匹配的操作系统+编译器配置,还可以将它们作为二进制下载提供。

例如,要开始使用 Conan,您可以在存储库中创建一个基本的

conanfile.txt

[requires]
zlib/1.3.1

[options]
zlib/*:shared=True

[layout]
cmake_layout

[generators]
CMakeDeps
CMakeToolchain

然后在 Dockerfile 中包含以下命令:

RUN pip install conan
RUN conan profile detect
RUN conan install . -s build_type=Release --build=missing
RUN cmake . --preset conan-release
RUN cmake --build --preset conan-release
© www.soinside.com 2019 - 2024. All rights reserved.