cmake Conan2配置方法

安装:

  1. 使用python安装

    pip install conan
    
  2. 验证:

    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
    )
    
posted @ 2025-01-04 23:03  密码战士  阅读(554)  评论(0)    收藏  举报