~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%) が観察されました。
- 従来のフォルダー構文を使用してビルドする
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のバグでしょうか、それとも何か間違っていますか?
OS:Windows 10 64bit、cmake バージョン 3.21.2