-
Notifications
You must be signed in to change notification settings - Fork 503
Description
Brief Issue Summary
When using ninja as a generator and when you change the configure preset it will automatically detect that ninja and cl are not in the path and it will load the appropriate vcvars, which is expected. However, after the change it will unload and reload every type of preset and for each preset type (configure, build, test, package, workflow). The expectation is for the vcvars (which is taking 5-10 seconds) to be ran only once per configure preset change, as the same Visual Studio development environment variables can be used for all presets.
This behavior is significantly impacting the experience of doing builds with multiple compilers on Windows. For comparison on Linux, initializing all types of presets takes less than a second.
Debug Log
Relevant logs:
[proc] The command: C:\Windows\System32\where.exe cl exited with code: 1
[preset] Using developer environment from Visual Studio (instance b89de9c3, version 17.8.34601.278, installed at "C:\Program Files\Microsoft Visual Studio\2022\Enterprise")
[visual-studio] Patch Windows SDK path from C:\Program Files (x86)\Windows Kits\10\bin\x64 to C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64 for C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat
[proc] The command: C:\Windows\System32\where.exe ninja exited with code: 1
[preset] Ninja is not set on PATH, trying to use C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja\ninja.exe
[driver] Switching to configure preset: windows-ninja-msvc-x64
[driver] Unsetting test preset
[driver] Switching to build preset: windows-ninja-msvc-x64-debug
[proc] The command: C:\Windows\System32\where.exe cl exited with code: 1
[preset] Using developer environment from Visual Studio (instance b89de9c3, version 17.8.34601.278, installed at "C:\Program Files\Microsoft Visual Studio\2022\Enterprise")
[visual-studio] Patch Windows SDK path from C:\Program Files (x86)\Windows Kits\10\bin\x64 to C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64 for C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat
[proc] The command: C:\Windows\System32\where.exe ninja exited with code: 1
[preset] Ninja is not set on PATH, trying to use C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja\ninja.exe
[driver] Switching to test preset: __defaultTestPreset__
[proc] The command: C:\Windows\System32\where.exe cl exited with code: 1
[preset] Using developer environment from Visual Studio (instance b89de9c3, version 17.8.34601.278, installed at "C:\Program Files\Microsoft Visual Studio\2022\Enterprise")
[visual-studio] Patch Windows SDK path from C:\Program Files (x86)\Windows Kits\10\bin\x64 to C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64 for C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat
[proc] The command: C:\Windows\System32\where.exe ninja exited with code: 1
[preset] Ninja is not set on PATH, trying to use C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja\ninja.exe
[driver] Switching to package preset: __defaultPackagePreset__
[proc] The command: C:\Windows\System32\where.exe cl exited with code: 1
[preset] Using developer environment from Visual Studio (instance b89de9c3, version 17.8.34601.278, installed at "C:\Program Files\Microsoft Visual Studio\2022\Enterprise")
[visual-studio] Patch Windows SDK path from C:\Program Files (x86)\Windows Kits\10\bin\x64 to C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64 for C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat
[proc] The command: C:\Windows\System32\where.exe ninja exited with code: 1
[preset] Ninja is not set on PATH, trying to use C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja\ninja.exe
[driver] Switching to workflow preset: __defaultWorkflowPreset__
Additional Information
CMakePresets.json:
{
"version": 8,
"configurePresets": [
{
"name": "base",
"hidden": true,
"binaryDir": "${sourceDir}/out/build/${presetName}",
"installDir": "${sourceDir}/out/install/${presetName}",
"cacheVariables": {
"CMAKE_DIR": "${fileDir}"
}
},
{
"name": "windows-x64",
"hidden": true,
"inherits": "base",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"architecture": {
"value": "x64",
"strategy": "external"
},
"toolset": {
"value": "v143,host=x64",
"strategy": "external"
}
},
{
"name": "windows-ninja-x64",
"hidden": true,
"inherits": "windows-x64",
"generator": "Ninja Multi-Config"
},
{
"name": "windows-ninja-clang-x64",
"displayName": "Windows Ninja Clang x64",
"inherits": "windows-ninja-x64",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang-cl.exe",
"CMAKE_CXX_COMPILER": "clang-cl.exe"
}
},
{
"name": "windows-ninja-msvc-x64",
"displayName": "Windows Ninja MSVC x64",
"inherits": "windows-ninja-x64",
"cacheVariables": {
"CMAKE_C_COMPILER": "cl.exe",
"CMAKE_CXX_COMPILER": "cl.exe"
}
},
{
"name": "windows-vs-msvc-x64",
"displayName": "Windows VS MSVC x64",
"description": "Generates Visual Studio solution and project files. Slower build than ninja.",
"inherits": "windows-x64",
"generator": "Visual Studio 17 2022"
},
{
"name": "linux-ninja-x64",
"hidden": true,
"inherits": "base",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Linux"
},
"generator": "Ninja Multi-Config",
"cacheVariables": {
"CMAKE_C_FLAGS": "-m64",
"CMAKE_CXX_FLAGS": "-m64"
}
},
{
"name": "linux-ninja-clang-x64",
"displayName": "Linux Ninja Clang x64",
"inherits": "linux-ninja-x64",
"cacheVariables": {
"CMAKE_C_COMPILER": "/usr/bin/clang",
"CMAKE_CXX_COMPILER": "/usr/bin/clang++"
}
},
{
"name": "linux-ninja-gcc-x64",
"displayName": "Linux Ninja GCC x64",
"inherits": "linux-ninja-x64",
"cacheVariables": {
"CMAKE_C_COMPILER": "/usr/bin/gcc",
"CMAKE_CXX_COMPILER": "/usr/bin/g++"
}
}
],
"buildPresets": [
{
"name": "windows-ninja-clang-x64-debug",
"displayName": "Windows Ninja Clang x64 Debug",
"configurePreset": "windows-ninja-clang-x64",
"configuration": "Debug"
},
{
"name": "windows-ninja-clang-x64-release",
"displayName": "Windows Ninja Clang x64 Release",
"configurePreset": "windows-ninja-clang-x64",
"configuration": "Release"
},
{
"name": "windows-ninja-clang-x64-RelWithDebInfo",
"displayName": "Windows Ninja Clang x64 RelWithDebInfo",
"configurePreset": "windows-ninja-clang-x64",
"configuration": "RelWithDebInfo"
},
{
"name": "windows-ninja-msvc-x64-debug",
"displayName": "Windows Ninja MSVC x64 Debug",
"configurePreset": "windows-ninja-msvc-x64",
"configuration": "Debug"
},
{
"name": "windows-ninja-msvc-x64-release",
"displayName": "Windows Ninja MSVC x64 Release",
"configurePreset": "windows-ninja-msvc-x64",
"configuration": "Release"
},
{
"name": "windows-ninja-msvc-x64-RelWithDebInfo",
"displayName": "Windows Ninja MSVC x64 RelWithDebInfo",
"configurePreset": "windows-ninja-msvc-x64",
"configuration": "RelWithDebInfo"
},
{
"name": "windows-vs-msvc-x64-debug",
"displayName": "Windows VS MSVC x64 Debug",
"configurePreset": "windows-vs-msvc-x64",
"configuration": "Debug"
},
{
"name": "windows-vs-msvc-x64-release",
"displayName": "Windows VS MSVC x64 Release",
"configurePreset": "windows-vs-msvc-x64",
"configuration": "Release"
},
{
"name": "windows-vs-msvc-x64-RelWithDebInfo",
"displayName": "Windows VS MSVC x64 RelWithDebInfo",
"configurePreset": "windows-vs-msvc-x64",
"configuration": "RelWithDebInfo"
},
{
"name": "linux-ninja-clang-x64-debug",
"displayName": "Linux Ninja Clang x64 Debug",
"configurePreset": "linux-ninja-clang-x64",
"configuration": "Debug"
},
{
"name": "linux-ninja-clang-x64-release",
"displayName": "Linux Ninja Clang x64 Release",
"configurePreset": "linux-ninja-clang-x64",
"configuration": "Release"
},
{
"name": "linux-ninja-clang-x64-RelWithDebInfo",
"displayName": "Linux Ninja Clang x64 RelWithDebInfo",
"configurePreset": "linux-ninja-clang-x64",
"configuration": "RelWithDebInfo"
},
{
"name": "linux-ninja-gcc-x64-debug",
"displayName": "Linux Ninja GCC x64 Debug",
"configurePreset": "linux-ninja-gcc-x64",
"configuration": "Debug"
},
{
"name": "linux-ninja-gcc-x64-release",
"displayName": "Linux Ninja GCC x64 Release",
"configurePreset": "linux-ninja-gcc-x64",
"configuration": "Release"
},
{
"name": "linux-ninja-gcc-x64-RelWithDebInfo",
"displayName": "Linux Ninja GCC x64 RelWithDebInfo",
"configurePreset": "linux-ninja-gcc-x64",
"configuration": "RelWithDebInfo"
}
]
}
CMake Tools Diagnostics
{
"os": "win32",
"vscodeVersion": "1.86.2",
"cmtVersion": "1.17.17",
"configurations": [
{
"folder": "<scrubbed>",
"cmakeVersion": "3.28.3",
"configured": true,
"generator": "Ninja Multi-Config",
"usesPresets": true,
"compilers": {
"C": "cl.exe",
"CXX": "cl.exe"
}
}
],
"cpptoolsIntegration": {
"isReady": true,
"hasCodeModel": true,
"activeBuildType": "Debug",
"buildTypesSeen": [
"Debug",
"Release",
"RelWithDebInfo"
],
"requests": [],
"responses": [],
"partialMatches": [],
"targetCount": 14,
"executablesCount": 2,
"librariesCount": 9,
"targets": [<scrubbed>]
},
"settings": [
{
"communicationMode": "automatic",
"useCMakePresets": "auto",
"configureOnOpen": false
}
]
}
Metadata
Metadata
Assignees
Labels
Type
Projects
Status