0

我有一个带有 ~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%)(两者都在相同的干净环境中运行):

  1. 使用经典文件夹语法构建
cmake --preset=base
cmake --build G:\.bld -j
  1. 使用新的预设语法构建
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

4

0 回答 0