Conan使用
使用包
使用 Conan 安装Zlib并生成 CMake 查找此库和构建项目所需的文件。运行
conan install . --output-folder=build --build=missing
输出结果
...
======== Computing dependency graph ========
zlib/1.2.11: Not found in local cache, looking in remotes...
zlib/1.2.11: Checking remote: conancenter
zlib/1.2.11: Downloaded recipe revision fca992a7d96a1b92bd956caa8a97d18f
Graph root
conanfile.txt: /home/jasper/work/examples2/tutorial/consuming_packages/simple_cmake_project/conanfile.txt
Requirements
zlib/1.2.11#fca992a7d96a1b92bd956caa8a97d18f - Downloaded (conancenter)
======== Computing necessary packages ========
Requirements
zlib/1.2.11#fca992a7d96a1b92bd956caa8a97d18f:897e6fde718e72637d92b0b8ed929893a1976238 - Build
======== Installing packages ========
zlib/1.2.11: Sources downloaded from 'conancenter'
zlib/1.2.11: Calling source() in /home/jasper/.conan2/p/zlibdb1c5346ffee7/s/src
-------- Installing package zlib/1.2.11 (1 of 1) --------
...
注意事项:
- Conan 从远程服务器安装了Zlib库,如果该库可用,则默认为 Conan Center 服务器。
- 服务器存储 Conan recipes(即定义如何构建库的文件)和可重复使用的二进制文件,不必每次都从源代码构建。
- Conan 在build文件夹下生成了几个文件。conanfile.txt
CMakeToolchain
中设置的和CMakeDeps
生成器生成的。生成文件,以便 CMake 找到我们刚刚下载的 Zlib 库。另一方面,为 CMake 生成一个工具链文件,以便我们可以使用我们为默认配置文件检测到的相同设置透明地使用 CMake 构建我们的项目。
$ cd build
$ cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
$ cmake --build .
...
[100%] Built target compressor
$ ./compressor
Uncompressed size is: 233
Compressed size is: 147
ZLIB VERSION: 1.2.11
使用构建工具作为 Conan 包
Conan 还可以帮助您安装这些工具并使用它们来编译消费者项目或其他 Conan 软件包。
在前面的例子里 ,修改Conanfile.txt , 声明要使用 CMake v3.22.6构建我们的应用程序。
[requires]
zlib/1.2.11
[tool_requires]
cmake/3.22.6
[generators]
CMakeDeps
CMakeToolchain
注意事项:
- 此conanfile.txt将分别安装zlib/1.2.11和cmake/3.22.6 。
- 如果 Conan 在 Conan Center 中找不到 Zlib 的二进制文件,并且需要从源代码构建,则系统中必须已经存在 CMake 安装,因为
cmake/3.22.6
您的声明conanfile.txt
仅适用于您当前的项目,而不是所有依赖项。
在CMakeLists.txt添加输出信息,显示使用的CMake版本.
cmake_minimum_required(VERSION 3.15)
project(compressor C)
find_package(ZLIB REQUIRED)
message("Building with CMake version: ${CMAKE_VERSION}")
add_executable(${PROJECT_NAME} src/main.c)
target_link_libraries(${PROJECT_NAME} ZLIB::ZLIB)
运行
conan install . --output-folder=build --build=missing
cd build
source conanbuild.sh // 文件设置了一些环境变量
cmake --version // 运行cmake并检查版本
cmake .. -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
cmake --build .