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

如何加速使用vcpkg清单模式的CMake项目构建过程?

加速CMake+Vcpkg清单模式构建速度的方法

从你的构建输出看,Vcpkg包安装阶段耗时极短(仅9.98微秒),瓶颈在CMake的配置阶段(耗时25.4秒)。以下是针对性的加速方案:

一、优化CMake配置本身

  • 避免完全重建build目录:不要每次都删除bin目录重新执行cmake ../ -B .,而是直接用cmake --build bin进行增量构建。仅当CMakeLists.txt、vcpkg.json或系统环境变化时,才重新运行配置命令。
  • 启用并行配置:CMake 3.12+支持-j参数利用多核CPU加速配置,执行命令:
    cmake ../ -B . -j$(nproc)
    
  • 替换aux_source_directory为显式源文件列表:aux_source_directory会在每次配置时扫描目录,耗时随文件数量增加。把:
    aux_source_directory(${CMAKE_SOURCE_DIR}/src/ SOURCE)
    aux_source_directory(${CMAKE_SOURCE_DIR}/test/ TEST_SOURCE)
    
    改成显式列出文件:
    set(SOURCE
        src/file1.cpp
        src/file2.cpp
        # 其他源文件...
    )
    set(TEST_SOURCE
        test/test1.cpp
        test/test2.cpp
        # 其他测试文件...
    )
    

二、优化Vcpkg相关配置

  • 将toolchain文件移到命令行指定:不要在CMakeLists.txt里硬编码CMAKE_TOOLCHAIN_FILE,改为执行CMake时通过参数传递:
    cmake ../ -B . -DCMAKE_TOOLCHAIN_FILE="${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
    
    这样CMake不会每次都重新加载toolchain脚本,减少配置开销。
  • 跳过编译器哈希检测:每次配置时Vcpkg都会检测编译器哈希,可通过环境变量跳过(注意:编译器版本变化时需要手动清除Vcpkg缓存):
    export VCPKG_DISABLE_COMPILER_HASH=1
    

三、重构CMakeLists.txt减少冗余操作

  • 提前设置构建类型:把CMAKE_BUILD_TYPE的设置移到project命令之后、find_package之前,避免CMake在配置后期重新调整参数:
    project(G C CXX)
    
    # 提前设置构建类型
    if(NOT DEFINED BUILD_TYPE)
        set(CMAKE_BUILD_TYPE RELEASE)
    else()
        set(CMAKE_BUILD_TYPE ${BUILD_TYPE})
    endif()
    
    set(CMAKE_C_STANDARD 11)
    set(CMAKE_CXX_STANDARD 17)
    
  • 用target_include_directories替代全局include_directories:全局包含目录会让CMake处理所有目标的路径,改为针对单个目标设置:
    add_library(sourceLib SHARED ${SOURCE})
    target_include_directories(sourceLib PRIVATE ${CMAKE_SOURCE_DIR}/inc)
    
    add_executable(test ${TEST_SOURCE})
    target_include_directories(test PRIVATE ${CMAKE_SOURCE_DIR}/inc)
    
  • 移除无用变量:ROOT_DIR变量在当前脚本中未被使用,可直接删除,减少CMake的变量处理步骤。

四、清理项目无关文件

  • 删除项目根目录下的__pycache__目录,避免CMake扫描无关文件,增加配置时间。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:25:12