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

如何用CMake在VS同解决方案中管理库与应用的源码依赖

实现方案

1. 添加顶层CMake配置文件

在项目根目录/project下创建CMakeLists.txt,用来整合两个子项目并统一处理Conan依赖:

cmake_minimum_required(VERSION 3.15)

# 定义合并项目名称
project(MyCombinedProject)

# 引入Conan CMake工具(需提前将conan.cmake放入项目根目录或CMake二进制目录)
include(conan.cmake)

# 安装library的第三方依赖
conan_cmake_run(CONANFILE ${CMAKE_SOURCE_DIR}/library/conanfile.py
                BASIC_SETUP CMAKE_TARGETS
                BUILD missing)

# 安装application的第三方依赖
conan_cmake_run(CONANFILE ${CMAKE_SOURCE_DIR}/application/conanfile.py
                BASIC_SETUP CMAKE_TARGETS
                BUILD missing)

# 将library作为独立子项目引入,会在VS解决方案中生成对应项目
add_subdirectory(library)

# 将application作为子项目引入
add_subdirectory(application)

2. 适配application的CMake配置(可开关切换开发/发布模式)

修改application/CMakeLists.txt,增加一个开关选项,开发阶段直接链接本地library项目,发布阶段切换为find_package调用:

cmake_minimum_required(VERSION 3.15)
project(application)

# 引入Conan工具处理自身依赖
include(${CMAKE_BINARY_DIR}/conan.cmake)
conan_cmake_run(CONANFILE ${CMAKE_SOURCE_DIR}/conanfile.py
                BASIC_SETUP CMAKE_TARGETS
                BUILD missing)

# 开发模式开关:开启时链接本地library项目,关闭时使用find_package
option(USE_LOCAL_LIBRARY "Link against local library project" ON)

# 添加应用程序源文件(保留你原有的配置)
add_executable(application src/main.cpp)

if(USE_LOCAL_LIBRARY)
  # 直接链接library项目的目标(需和library的CMakeLists中定义的目标名一致)
  target_link_libraries(application PRIVATE library)
  # 导入library的头文件目录(如果library未通过target_include_directories自动导出)
  target_include_directories(application PRIVATE ${CMAKE_SOURCE_DIR}/library/include)
else()
  # 发布模式下使用find_package调用已安装的library
  find_package(library REQUIRED)
  target_link_libraries(application PRIVATE library::library)
endif()

3. 生成Visual Studio解决方案

  1. 在项目根目录创建build目录并进入
  2. 运行CMake命令生成解决方案(根据你的VS版本调整生成器参数):
cmake .. -G "Visual Studio 17 2022" -A x64
  1. 打开生成的MyCombinedProject.sln,即可看到library和application两个独立项目。修改library源码后,构建application时会自动触发library的增量构建。

关键优势

  • 两个子项目的原有CMakeLists.txt无需大幅修改,仅application增加了一个开关逻辑
  • 开发阶段无需反复通过Conan安装library,修改源码即可自动同步构建
  • VS解决方案中两个项目独立,可单独调试或构建

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:53:11