我有一个带有 ~1.5KC/C++ 项目/子目录的 CMake 解决方案,我想使用 CMake 预设。这是我的 CMakePresets.json:
{
"version": 3,
"cmakeMinimumRequired": {
"major": 3,
"minor": 20,
"patch": 1
},
"configurePresets": [
{
"name" : "base" ,
"displayName" : "Base Config Preset" ,
"description" : "Base config using VS2019" ,
"generator" : "Visual Studio 16 2019" ,
"architecture" : {"value":"Win32", "strategy":"set"} ,
"binaryDir" : "G:/.bld" ,
"installDir" : "G:/.dst"
}
],
"buildPresets": [
{
"name" : "base" ,
"displayName" : "Base Build Preset" ,
"description" : "base build preset" ,
"jobs" : 0 ,
"cleanFirst" : true ,
"verbose" : false ,
"configurePreset" : "base"
}
]
}
我观察到以下两种方法之间存在显着的持续时间差异(~40%)(两者都在相同的干净环境中运行):
- 使用经典文件夹语法构建
cmake --preset=base
cmake --build G:\.bld -j
- 使用新的预设语法构建
cmake --preset=base
cmake --build --preset=base -j
两者在 CMake 配置和生成步骤中执行相似。差异出现在构建步骤中,在显示 Microsoft 的标题后:
Microsoft (R) Build Engine version 16.11.2+f32259642 for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
方法 1. 在显示以下输出行之前没有任何延迟。总时间约为 14 分钟
方法 2. 在显示输出的下一行之前有 5-6 分钟的延迟(但 CPU 处于负载状态)。Microsoft 的标题再次显示,然后一切正常继续。总时间约为 20 分钟
当什么都不显示时,持续时间差异似乎或多或少是初始延迟
它们不应该是相同的吗?可能是 CMake 中的错误或我做错了什么?
操作系统:Windows 10 64bit,cmake 版本 3.21.2