C++ conan包管理工具的常用操作

Leanrning

1. 远程库

conan remote -h
	list                List current remotes#查看所有远程库
    add                 Add a remote#添加一个远程库
    remove              Remove a remote#删除一个远程库
    update              Update the remote url# 更新远程库的url
    rename              Update the remote name# 更新远程库的名称

1.1 查看所有远程库

conan remote list

# conancenter: https://center.conan.io [Verify SSL: True]

1.2 添加远程库

conan remote add 远程仓库名 远程仓库url

conan remote add factory http://192.168.3.234:8081/artifactory/api/conan/conan

1.3 删除远程库

conan remote add 远程仓库名

conan remote remove factory http://192.168.3.234:8081/artifactory/api/conan/conan

1.4 更改远程仓库

更改远程仓库的url:

​ conan remote update factory 远程仓库名 远程仓库url

更新远程库的名称:

​ conan remote rename 远程仓库old名 远程仓库new名

#更改远程仓库的url: 
conan remote update factory http://192.168.3.234:8081/artifactory/api/conan/conan
conan remote rename factory factory1

1.5 推送到远程库

conan upload 包名/版本@用户/渠道 --all -r=远程仓库名

conan upload hello/0.1@demo/testing --all -r my_local_server

1.6 搜索远程库中的包

conan search glog --r 远程仓库名

conan search glog --r conancenter # 搜索conan-center中的glogo包

2. 本地库

包的结构包括:包名/版本@用户/渠道

2.1 搜索包

#列出本地库中所有包
conan search *

#列出指定远程库中的所有包
conan search "*" --remote=conancenter

#在指定的远程库中搜索指定包
conan search poco --remote=conancenter

2.2 查看包的详细信息

conan inspect 包名/版本

conan inspect poco/1.9.4

2.3 下载包到本地库

conan install glog/0.4.0@bincrafters/stable -r conancenter

# 通过本地文件中的conanfile.txt生成包,并安装所需的依赖
conan install ..

2.4 删除本地库中的包

conan remove glog/0.4.0@bincrafters/stable

3. 使用conan管理项目包依赖

3.1 创建conanfile.txt

  • 默认是使用静态库方式引入第三方库
[requires]
glog/0.4.0@bincrafters/stable

[generators]
cmake
  • 使用动态库方式引入第三方库
[options]
*:shared=True     # 使用动态库形式

[imports]
bin, *.dll -> ./bin # Copies all dll files from packages bin folder to my "bin" folder
lib, *.dylib* -> ./bin # Copies all dylib files from packages lib folder to my "bin" folder

然后执行:

通过conanfile.txt从远端仓库下载所需要的依赖包

-s build_type=Debug

可以使用一下形式,来覆盖默认的配置文件同3.5

debug_shared

 include(default)

 [settings]
 build_type=Debug

 [options]
 poco:shared=True
 poco:enable_apacheconnector=False
 openssl:shared=True
conan install .. -pr=debug_shared
conan install .

# --install-folder指定安装包的位置
conan install . --install-folder=md5_build

3.3 查看本地conanfile.txt文件中的依赖

conan info .

3.4 通过cmake生成项目文件

C:\install\CMake\bin\cmake.EXE --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -Sd:/User/Desktop/conanproject -Bd:/User/Desktop/conanproject/build -G "Visual Studio 16 2019" -T host=x64 -A x64

3.5 编译项目文件生成可执行文件

如果出现:error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项

可能就需要修改:“C:\Users\15282.conan\profiles\default”

build_type=Debug(默认为Release)

或者直接修改cmake的编译选项为Release

C:\install\CMake\bin\cmake.EXE --build d:/User/Desktop/conanproject/build --config Debug --target md5 -j 18 --

4. 创建一个新的Package

4.1 使用conan new创建一个信息包

会生成以下文件:

  • conanfile.py:在根文件夹上,有一个 conanfile.py 它是主配方文件,负责定义如何构建和使用包。
  • CMakeLists.txt:一个简单的通用CMakeLists.txt,里面没有任何关于柯南的具体内容。
  • src 文件夹:包含简单C++"hello"库的 src 文件夹。
  • (可选)test_package文件夹:包含一个示例应用程序,该应用程序将需要并与创建的包链接。这不是强制性的,但检查我们的软件包是否正确创建是很有用的。
conan new hello/0.1 --template=cmake_lib
4.1.1 conanfile.py的包装配方
  • settings是项目范围的配置,不能在配方(如操作系统或体系结构)中默认。
  • options是特定于包的配置,可以在配方中默认,在这种情况下,我们可以选择将包创建为共享或静态库,默认为静态。
4.1.2 config_options()

通过判断不同的系统或者编译器之类的,用于微调option.

4.1.3 generate()

执行将创建一个映射 Conan 和 CMake 语法的 conan_toolchain.cmake 文件

4.1.4 build()

调用cmake的 configure和build

4.1.5 package()

该方法将项目(标头、库)从生成文件夹复制到最终的包文件夹。可以说会用copy,也可以使用cmake的install

4.1.6 package_info()

该方法定义了使用者在使用此包时必须链接到"hello"库。也可以定义包含或 lib 路径等其他信息.

4.1.7 source()

用于通过git获取github仓库的源代码文件

def source(self):
	git = tools.Git(folder="hello")
    git.clone("https://github.com/conan-io/hello.git", "master")

4.2 test_package目录

测试是"包"测试,并验证包是否已正确创建,以及包使用者将能够链接到它并重用它

4.3 创建并测试包

-o hello:shared=True

-s build_type=Debug

conan createconan install的命令相同

conan create . 用户/渠道
conan create . demo/testing
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值