摘要¶
carbin是 EA 体系中的 cicd 工具, carbin不仅能够集成安装 cmake 包,还能够集成安装二进制包。同时,carbin 快速生成 cmake 项目模板,方便快速构建项目。 carbin的有点在于:
提供 cmake 模板,快速构建项目,查看 carbin create ,秒级创建基于 cmake 的项目。自动生成 cmake 构建体系,包括测试,基准测试,示例,安装包导出等。
非侵入式:无需在 cmake 中编写特殊钩子即可使用 carbin 。基于 cmake 构建的项目,可以使用 carbin 或独立使用。
开箱即用:由于它使用 cmake 的标准构建和安装,它已经可以与几乎所有 cmake 包一起使用。无需等待包转换为支持 carbin 。标准 cmake 包可以立即安装。
去中心化:包可以从任何地方安装,从github,urls或本地文件。
与其他工具的一些比较:
|
|
|
|
|
|
|
|---|---|---|---|---|---|---|
|
easy |
middle |
hard |
middle |
hard |
hard |
|
pip easy |
binary easy |
NA easy |
pip easy |
pip easy |
binary hard |
|
source/binary |
binary |
source |
source |
source/binary |
source |
|
support |
support |
support |
support |
support |
support |
|
small |
very large |
small |
small |
middle |
small |
|
support |
/ |
support |
support |
/ |
support |
|
1 |
1 |
more |
more |
1 |
more |
|
1 |
1 |
more |
more |
1 |
1 |
|
good |
poor |
good |
good |
middle |
poor |
|
good |
poor |
middle |
middle |
middle |
poor |
|
good |
middle |
good |
good |
middle |
poor |
|
good |
middle |
/ |
/ |
middle |
/ |
|
support |
/ |
/ |
/ |
/ |
/ |
|
support |
support |
support |
support |
support |
support |
|
support |
support |
/ |
/ |
support |
/ |
获取carbin¶
carbin 可以通过pip安装:
pip install carbin
或者从源码安装:
python setup.py install
容器中使用¶
carbin 提供了一个docker镜像,可以在容器中使用。:
docker pull lijippy/ea_inf:c7_base_v1
docker run -it lijippy/ea_inf:c7_base_v1
快速开始¶
首先,我们可以安装一个包,例如 zlib
carbin install http://zlib.net/zlib-1.2.11.tar.gz
然而,安装食谱要容易得多,所以我们不必记住网址。我们可以安装 菜谱
carbin install gottingen/carbin-recipes
接下来我们可以安装可从菜谱中找到的任何包。例如,boost:
carbin install boost
或者,我们可以安装 curl
carbin install curl
使用¶
安装一个包¶
任何使用cmake构建的库都可以使用 carbin 构建并安装为包。包的源可以来自许多地方(参见 源码安装)。我们可以简单地使用其URL安装 zlib:
carbin install http://zlib.net/zlib-1.2.11.tar.gz
或者,我们可以使用 carbin 的缩写形式从github安装包。例如,安装John MacFarlane的C实现的CommonMark cmark:
carbin install jgm/cmark
卸载一个包¶
用安装包时使用的相同源名称可以删除包:
carbin install http://zlib.net/zlib-1.2.11.tar.gz
carbin remove http://zlib.net/zlib-1.2.11.tar.gz
如果指定了别名,则必须使用别名的名称:
carbin install zlib,http://zlib.net/zlib-1.2.11.tar.gz
carbin remove zlib
测试一个包¶
可以在安装包之前运行包的测试套件,通过使用 --test 标志。这将构建 check 目标或运行 ctest 。因此,如果我们想运行 zlib 的测试,我们可以这样做:
carbin install --test http://zlib.net/zlib-1.2.11.tar.gz
设置安装目录¶
默认情况下,包安装在本地目录 carbin 中。可以使用 --prefix 标志更改此目录:
carbin install --prefix /usr/local zlib:http://zlib.net/zlib-1.2.11.tar.gz
或者,可以设置环境变量 CARBIN_PREFIX 来更改默认值。
与cmake集成¶
默认情况下,carbin创建一个cmake工具链文件,其中包含构建和查找carbin前缀中的库所需的设置。工具链文件位于 $CARBIN_PREFIX/carbin.cmake 。如果需要使用另一个工具链,可以使用 init 命令指定:
carbin init --toolchain my_cmake_toolchain.cmake
c++的编译版本也可以设置为工具链:
carbin init --std=c++14
但是我们并不建议这样做,cmake可以通过 -DCMAKE_CXX_STANDARD=14 来设置。这种方式更适合于 carbin 和项目的集成。
创建一个项目¶
carbin可以快速生成一个cmake项目模板,方便快速构建项目。:
carbin create --name my_project --test --benchmark --example --requirements
cd my_project
mkdir build
cd build
cmake ..
make
make package
这将生成一个名为 my_project 的项目,其中包含一个示例,一个测试和一个基准测试。carbin_deps.txt 文件包含项目的依赖项。如果不需要测试或者示例,可以
不加 --test 或者 --example 选项。
例如不需要测试的项目:
carbin create --name my_project --benchmark --example --requirements