1. 安装conan
使用pip命令安装conan,如果没有安装pip的,可以先安装好python后,再安装pip。
pip install conan
之后就可以使用conan命令。
2. 管理远程库
默认conan会添加一个远程库:conan-center:
我们可以使用search选项,搜索包:
conan search glog --remote conan-center # 在conan-center远程库中搜索glog库
我们也可以添加一个远程库:
conan remote add conan-transit https://conan-transit.bintray.com
3. 使用conan管理依赖包
这里就以使用glog作为我们的一个例子。
安装我们需要的包命令是:
conan install glog/0.4.0@bincrafters/stable -r conan-center
conan remove glog/0.4.0@bincrafters/stable
glog/0.4.0@bincrafters/stable 就是表示一个包,很明显,它的命名很有规则:包名/版本@用户/渠道
.
不过这里我们并不需要手动先去安装,可以先写一个conanfile.txt:
[requires]
glog/0.4.0@bincrafters/stable
[generators]
cmake
然后执行:
conan install .
它就会去安装我们指定的包,如果本地没有这个包,那么它就会去我们之前配置好的远程服务器上去查找。执行完install后,会在当前目录生成以下三个文件:
其中:
- conaninfo.txt这个文件可以判断包的详细信息,包括编译器信息、系统架构等;
- conanbuildinfo.cmake这个文件是给cmake引入的,即告诉cmake依赖关系,比如头文件的引用路径,库的引用路径,库的链接等信息;
- conanbuildinfo.txt这个文件方便我们阅读上面的信息。
接下来就是先编写我们的源代码,main.cpp:
#include <glog/logging.h>
int main(int argc, char* argv[])
{
google::InitGoogleLogging(argv[0]);
FLAGS_alsologtostderr = true;
LOG(INFO) << "------conan test-----------------";
google::ShutdownGoogleLogging();
return 0;
}
然后编写CmakeLists.txt文件,将conanbuildinfo.cmake配置进去(注意相对路径):
project(ConanTest)
cmake_minimum_required(VERSION 2.8.12)
include(${PROJECT_SOURCE_DIR}/conanbuildinfo.cmake)
conan_basic_setup()
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS})
然后执行cmake和make,完成编译后,即可执行:
此外需注意的是,默认conan都是采用静态库版本的包,如果想要采用动态库,只需要在conanfile.txt文件中加上以下内容:
[options]
glog:shared=True
有了conan管理包,复杂的C/C++工程也能像golang、python那样很方便的迁移编译。相比nuget,它对跨平台的支持更好。