使用carbin

安装

当一个软件从(源码 源码安装)安装时,carbin会运行等价的cmake安装命令命令来安装它:

mkdir build
cd build
cmake -DCMAKE_TOOLCHAIN_FILE=$CARBIN_PREFIX/carbin/carbin.cmake -DCMAKE_INSTALL_PREFIX=$CARBIN_PREFIX ..
cmake --build .
cmake --build . --target install

然而,``carbin``总是会在源码外创建构建目录。``carbin.cmake``是一个由``carbin``设置的工具链文件,这样cmake就可以找到安装的包。其他关于工具链的设置也可以添加(参见 init_cn). 这个工具链文件可以在cmake项目中使用。:

cmake -DCMAKE_TOOLCHAIN_FILE=$CARBIN_PREFIX/carbin/carbin.cmake ..

而不是传递工具链,``carbin``提供了一个构建命令来处理这个问题(参见 build_cn). 这将使用``carbin.cmake``工具链文件配置cmake并构建项目:

carbin build

默认情况下,它将构建``all``目标,但也可以指定目标:

carbin build --target some_target

对于不使用cmake的项目,那么就是在``CARBIN_PREFIX``中搜索依赖项。此外,很多包提供了``pkg-config``文件来管理依赖关系。因此,``carbin``提供了一个``pkg-config``命令,用于搜索``carbin``已安装的依赖项。例如,``carbin pkg-config``可以用来链接zlib的依赖项而不需要cmake:

carbin install zlib,http://zlib.net/zlib-1.2.11.tar.gz
g++ src.cpp `carbin pkg-config zlib --cflags --libs`

安装非cmake包

carbin也可以安装非cmake包。请注意,非cmake构建系统没有办法告诉构建依赖项安装在哪里。carbin将设置环境变量,如``PKG_CONFIG_PATH``和``PATH``,但如果依赖项不是使用pkg-config或这些标准环境变量找到的,那么您将需要查看构建脚本以了解解决依赖项所需的协议。

“” 使用自定义cmake “” 对于不支持使用cmake构建的包,可以提供一个cmake文件来构建包。这可以构建源文件或引导包的构建系统:

carbin install SomePackage --cmake mycmake.cmake

“” 头文件库 “” 对于只有头文件的库,``carbin``提供了一个cmake文件``header``来安装头文件。例如,Boost.Preprocessor库可以这样安装:

carbin install boostorg/preprocessor --cmake header

默认情况下,它将在’include’目录中安装头文件,但可以通过设置``INCLUDE_DIR``cmake变量来更改:

carbin install boostorg/preprocessor --cmake header -DINCLUDE_DIR=include

“” 二进制文件 “”

对于二进制文件,carbin``提供了一个cmake文件``binary,它将安装包中的所有文件而不构建任何源文件。例如,可以这样安装ubuntu的clang二进制文件:

carbin install clang,http://llvm.org/releases/3.9.0/clang+llvm-3.9.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz  --cmake binary

“” CMake子目录 “” 如果cmake不在顶级目录中,这将使用子目录中的cmake:

carbin install google/protobuf --cmake subdir

默认情况下,它使用一个名为``cmake``的目录,但可以通过设置``CMAKE_DIR``变量来更改:

carbin install sandstorm-io/capnproto --cmake subdir -DCMAKE_DIR=c++

“” Boost “” 提供了一个cmke ``boost``来安装boost库:

carbin install boost,http://downloads.sourceforge.net/project/boost/boost/1.62.0/boost_1_62_0.tar.bz2 --cmake boost

库可以通过cmake变量``BOOST_WITH_``和``BOOST_WITHOUT_``来选择。例如,只构建Boost.Filesystem(及其依赖项)可以这样构建:

carbin install boost,http://downloads.sourceforge.net/project/boost/boost/1.62.0/boost_1_62_0.tar.bz2 --cmake boost -DBOOST_WITH_FILESYSTEM=1

也可以构建除了Boost.Python之外的所有内容,如下所示:

carbin install boost,http://downloads.sourceforge.net/project/boost/boost/1.62.0/boost_1_62_0.tar.bz2 --cmake boost -DBOOST_WITHOUT_PYTHON=1

“” Meson “”

提供了一个cmke ``meson``来构建使用meson构建系统的包。形式为``MESON_SOME_VAR``的cmake变量将作为变量``some-var``传递给meson。

要使用meson,您需要安装python 3.5或更高版本,安装了meson和ninja。可以使用``pip3 install meson ninja``安装。carbin不提供meson的安装。

“” Autotools “” 提供了一个cmke ``autotools``来构建基于autotools的库。Autotools不是一个可移植的构建系统,可能不适用于所有平台。

“” Make “” 提供了一个cmke make``来构建基于makefile的库。这将调用``make,然后调用``make install``。它将把``PREFIX``变量设置为安装位置。Makefile不是一个可移植的构建系统,可能不适用于所有平台。