cmake Conan2配置方法
安装:
-
使用python安装
pip install conan
-
验证:
conan --version
初始化:
conan profile detect > default
会生成与平台相关的配置项位于C:\Users\<username>\.conan
或~/.conan
使用:
为项目编写conanfile:
[requires]
spdlog/1.15.0
openssl/3.3.2
libcurl/8.10.1
hiredis/1.2.0
yaml-cpp/0.8.0
[generators]
CMakeDeps
CMakeToolchain
[layout]
cmake_layout
该过程记得就自己编写,不记得就直接搜索对应包,在仓库中有使用详情。安装过程需要??上网
使用Conan2为项目安装包:
在conanfile.txt同级目录下执行下面命令:
conan install . -s build_type=Debug --build=missing
- conan install .——指定当前目录寻找conanfile文件
- -s build_type=Debug——指定安装类型为Debug版本
- --build=missing——指定从源码自动构建什么的,有时安装失败的时候就需要添加这个参数
- 还有其他参数可以指定输出路径、系统类型、编译器类型等。默认情况下不需要设置,Conan会通过默认配置文件自动选择。
添加到项目:
Conan2生成的默认是支持cmake的cmake_toolchain_file文件。嵌入到项目的方式和vcpkg一样,都需要通过在CMake_TOOLCHAIN_FILE参数来指定。
- 如果是Qt的话就需要修改项目添加一个CMake的Initial Configuration的String类型,指定目录
build/generators/conan_toolchain.cmake
。 - 如果是依靠CMakePresets文件的项目,需要在该文件中新加一个配置项,参考Qt。
注意:
-
使用Conan2无法配合ninja使用,因为Conan2指定了平台,而ninja不可以指定平台。或许可以通过某种方法配置来实现二者一起工作,目前还未找到。索性使用Conan2配合MSBuild工作。
-
由于Conan2的cmake种规定了cmake最小版本是15,因此需要把自己项目的cmake版本也修改为最小为15(猜测是这个原因,15以下会报错)。
-
如果需要使用动态库链接的话需要在安装的时候指定:
conan install . -o *:shared=True -s build_type=Debug --build=missing
-
使用动态库构建时,Conan不会自动复制所需要的动态库文件到可执行程序目录,需要通过cmake配置来实现:(替换yourTarget为你的实际项目可执行程序名称)
add_custom_command(TARGET yourTarget POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_RUNTIME_DLLS:yourTarget> $<TARGET_FILE_DIR:yourTarget> COMMAND_EXPAND_LISTS )