conan使用--安装和应用
Posted xl2432
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了conan使用--安装和应用相关的知识,希望对你有一定的参考价值。
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
另一个需要注意的点时,选择目标包是x86还是x64,可以通过两种方式(默认是x86_64):
conan install . -s arch=x86 -s arch_build=x86
conan install . --profile=myproject
profile文件可以定义[settings]字段:
[settings]
#setting=value
os_build=Linux
arch_build=x86_64
os=Macos
arch=x86_64
compiler=clang
compiler.version=3.5
compiler.libcxx=libstdc++11
build_type=Release
[options]
#MyLib:shared=True
*:shared=True
[env]
#env_var=value
CC=/usr/bin/clang
CXX=/usr/bin/clang++
[build_requires]
#tool/version@user/channel
那么我们可以自己创建一个profeile文件,定义上述设置,然后在install的释放指定配置文件即可。
补充:settings里的选项都可以直接使用 -s XX=XX
在命令中直接指定,在options你的选项都可以使用 -o XX=XX
来进行指定。
有了conan管理包,复杂的C/C++工程也能像golang、python那样很方便的迁移编译。相比nuget,它对跨平台的支持更好。
以上是关于conan使用--安装和应用的主要内容,如果未能解决你的问题,请参考以下文章
conan入门(二十五):imports将包安装到本地项目或其他指定位置
Android 逆向Android 进程注入工具开发 ( Visual Studio 开发 Android NDK 应用 | Visual Studio 中 SDK 和 NDK 安装位置 )(代码片段