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"
        }
    ]
  }

次の 2 つのアプローチ (両方とも同一のクリーンなコンテキストで実行された) の間で、大幅な期間の違い (~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のバグでしょうか、それとも何か間違っていますか?

OS:Windows 10 64bit、cmake バージョン 3.21.2

4

0 に答える 0