摘要

carbin是 EA 体系中的 cicd 工具, carbin不仅能够集成安装 cmake 包,还能够集成安装二进制包。同时,carbin 快速生成 cmake 项目模板,方便快速构建项目。 carbin的有点在于:

  • 提供 cmake 模板,快速构建项目,查看 carbin create ,秒级创建基于 cmake 的项目。自动生成 cmake 构建体系,包括测试,基准测试,示例,安装包导出等。

  • 非侵入式:无需在 cmake 中编写特殊钩子即可使用 carbin 。基于 cmake 构建的项目,可以使用 carbin 或独立使用。

  • 开箱即用:由于它使用 cmake 的标准构建和安装,它已经可以与几乎所有 cmake 包一起使用。无需等待包转换为支持 carbin 。标准 cmake 包可以立即安装。

  • 去中心化:包可以从任何地方安装,从github,urls或本地文件。

与其他工具的一些比较:

carbin

conda

cmake

CPM

conan

bazel

Usage complexity

easy

middle

hard

middle

hard

hard

Installation

pip easy

binary easy

NA easy

pip easy

pip easy

binary hard

dependency mode

source/binary

binary

source

source

source/binary

source

dependency tree

support

support

support

support

support

support

download size

small

very large

small

small

middle

small

local source

support

/

support

support

/

support

compile times

1

1

more

more

1

more

download times

1

1

more

more

1

1

compatibility

good

poor

good

good

middle

poor

speed

good

poor

middle

middle

middle

poor

ide compatibility

good

middle

good

good

middle

poor

system compatibility

good

middle

/

/

middle

/

install to system

support

/

/

/

/

/

project level manage

support

support

support

support

support

support

project reusable

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