conan使用包
安装依赖项
在使用conan install命令下载 Poco库并构建示例中。
如果您检查运行conan installconanbuildinfo.cmake时创建的文件,您可以看到那里声明了许多 CMake 变量。例如 ,它定义了 zlib 头文件的包含路径,并 定义了所有依赖项头文件的包含路径。CONAN_INCLUDE_DIRS_ZLIB CONAN_INCLUDE_DIRS
如果检查每个变量定义的完整路径,将看到它指向文件夹下的一个文件 夹。这些文件夹一起是本地缓存。这是包配置和二进制包存储和缓存的地方,因此不必再次检索它们。可以 使用conan search检查本地缓存,并使用conan remove命令从中删除包
在 shell 中执行conan install poco/1.9.4@命令,Conan 会将 Poco 包及其依赖项(openssl/1.0.2t和 zlib/1.2.11)下载到本地缓存并打印有关所在文件夹的信息,但是常用的方式是通过conanfile.txt,
所需的依赖项应在[requires]部分中指定。这是一个例子:
[requires]
mypackage/1.0.0@company/stable
generators
conan通过conanfile.txt并为每个构建创建文件,其中包含将您的程序与指定要求链接所需的所有信息。生成的文件通常是临时的,强调生成的文件与运行conan install时指定的给定配置(调试/发布、x86/x86_64 等)匹配非常重要。如果配置更改,文件将相应更改
Options
例如,conan install … -s build_type=Debug。这些设置通常是由客户端计算机定义的项目范围的配置,因此它们不能在Options中具有默认值。例如,对于包Options来说,将“Visual Studio”声明为默认编译器是没有意义的,因为这是最终用户定义的东西,如果他们在 Linux 中工作,则不太可能有意义。
可以通过使用conan get 命令检查配方来查看包的可用选项:
$ conan get poco/1.9.4@
要仅查看配方的特定字段,您可以使用conan inspect命令:
$ conan inspect poco/1.9.4@ -a=options
$ conan inspect poco/1.9.4@ -a=default_options
例如,我们可以通过编辑 [options]部分来修改前面的示例以使用动态链接而不是默认的静态链接conanfile.txt:
[requires]
poco/1.9.4
[generators]
cmake
[options]
poco:shared=True # PACKAGE:OPTION=VALUE
openssl:shared=True
我们可以检查生成的可执行文件,并查看它是否正在使用共享库。例如,在 Linux 中,我们可以使用objdump工具并查看动态部分:
$ cd bin
$ objdump -p md5
...
Dynamic Section:
NEEDED libPocoUtil.so.31
NEEDED libPocoXML.so.31
NEEDED libPocoJSON.so.31
NEEDED libPocoMongoDB.so.31
NEEDED libPocoNet.so.31
NEEDED libPocoCrypto.so.31
NEEDED libPocoData.so.31
NEEDED libPocoDataSQLite.so.31
NEEDED libPocoZip.so.31
NEEDED libPocoFoundation.so.31
NEEDED libpthread.so.0
NEEDED libdl.so.2
NEEDED librt.so.1
NEEDED libssl.so.1.0.0
NEEDED libcrypto.so.1.0.0
NEEDED libstdc++.so.6
NEEDED libm.so.6
NEEDED libgcc_s.so.1
NEEDED libc.so.6
可以将库的文件夹添加到路径(Linux 中的 LD_LIBRARY_PATH 环境变量、OSX 中的 DYLD_LIBRARY_PATH 或 Windows 中的系统 PATH),防止库连接不到引起错误
在 Windows 和 OSX 中,最简单的方法是将共享库复制到可执行文件夹中,以便可执行文件找到它们,而无需修改路径。
可以浏览本地缓存 (~/.conan/data) 中的包文件夹并查看共享库的位置。*.dll被复制到/bin是很常见的。其余的库应该在/lib文件夹中,
安装要求(从build文件夹中),然后再次运行二进制文件:
$ conan install ..
$ ./bin/md5