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 create
和conan install
的命令相同
conan create . 用户/渠道
conan create . demo/testing