You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Conan2中实现conan_cmake_run()的类似功能?

Conan2 替代 conan_cmake_run() 的方案

Conan2 移除了 conan_cmake_run() 函数,官方推荐采用命令行前置执行或CMake内联调用Conan命令的方式替代,以下是具体方案:

方案一:官方推荐的命令行+CMakeToolchain 流程

这是Conan2官方主推的方式,将依赖安装与CMake配置分离,逻辑更清晰可控:

  • 在项目根目录执行Conan安装命令(默认读取当前目录的conanfile.txt):
    conan install . --output-folder=build --build=missing
    
    若需要指定编译配置(如Debug/Release、编译器版本),可搭配profile文件:
    conan install . --output-folder=build --build=missing --profile:build=default --profile:host=my_profile
    
  • 在CMakeLists.txt中引入Conan生成的工具链文件,注意要放在project()命令之前:
    cmake_minimum_required(VERSION 3.15)
    # 引入Conan工具链
    include(${CMAKE_BINARY_DIR}/conan_toolchain.cmake)
    project(MyProject)
    # 后续正常添加目标、链接依赖
    add_executable(my_app src/main.cpp)
    target_link_libraries(my_app PRIVATE ${CONAN_LIBS})
    

方案二:CMake内联调用Conan命令(类似旧版行为)

如果希望保持类似conan_cmake_run()的「CMake配置时自动安装依赖」逻辑,可以用execute_process在CMake中直接调用Conan命令:

cmake_minimum_required(VERSION 3.15)
# 在CMake配置阶段执行Conan安装
execute_process(
    COMMAND conan install . --output-folder=${CMAKE_BINARY_DIR} --build=missing
    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
    RESULT_VARIABLE CONAN_INSTALL_RESULT
)
# 检查Conan执行状态
if(NOT CONAN_INSTALL_RESULT EQUAL 0)
    message(FATAL_ERROR "Conan依赖安装失败")
endif()
# 引入工具链文件
include(${CMAKE_BINARY_DIR}/conan_toolchain.cmake)
project(MyProject)

add_executable(my_app src/main.cpp)
target_link_libraries(my_app PRIVATE ${CONAN_LIBS})

补充说明

  • Conan2 完全兼容conanfile.txt,无需强制切换到conanfile.py,但官方更推荐后者以获得更灵活的依赖管理能力。
  • 若使用多配置生成器(如Visual Studio),需在Conan命令中指定--settings build_type=Debug/Release,或通过profile统一管理编译配置。

内容的提问来源于stack exchange,提问作者Popnut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:03:25