microsoft / microsoft/vscode-cmake-tools
Add "build all targets in all projects" command
- Dominant language
- TypeScript
- Stars
- 1.7k
- Forks
- 546
- Avg merge
- 2d 16h
- Merged PRs (30d)
- 32
Description
### Brief Issue Summary
The *Build All Projects* button at the top of the CMake Tools sidebar builds just the currently-selected project you'd get with the *Build the selected target: [\]* button in the bottom bar.
Note the `--target` argument in the build command in the attached debug log.
### CMake Tools Diagnostics
```shell
{
"os": "win32",
"vscodeVersion": "1.75.0",
"cmtVersion": "1.13.45",
"configurations": [
{
"folder": "c:\\openmw-dev\\openmw",
"cmakeVersion": "3.24.2",
"configured": false,
"generator": "Ninja Multi-Config",
"usesPresets": false,
"compilers": {}
}
],
"cpptoolsIntegration": {
"isReady": true,
"hasCodeModel": false,
"activeBuildType": "",
"buildTypesSeen": [],
"requests": [],
"responses": [],
"partialMatches": [],
"targetCount": 0,
"executablesCount": 0,
"librariesCount": 0,
"targets": []
},
"settings": [
{
"communicationMode": "automatic",
"useCMakePresets": "auto",
"configureOnOpen": false
}
]
}
```
### Debug Log
```shell
[main] Building folder: openmw
[main] Saving open files before configure/build
[main] The extension determined that a configuration is needed at this moment but we are skipping because the setting cmake.skipConfigureWhenCachePresent is ON. Make sure the CMake cache is in sync with the latest configuration changes.
[build] Starting build
[driver] Start build openmw-launcher
[proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" --build c:/openmw-dev/openmw/MSVC2022_64_Ninja --config RelWithDebInfo --target openmw-launcher --
[proc] with environment: {"ALLUSERSPROFILE":"C:\\ProgramData","APPDATA":"C:\\Users\\krizd\\AppData\\Roaming","APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL":"1","CHROME_CRASHPAD_PIPE_NAME":"\\\\.\\pipe\\LOCAL\\crashpad_23108_DPSBCEGATVNZGUVM","COMPUTERNAME":"CALENDAROFAUGUS","ChocolateyInstall":"C:\\ProgramData\\chocolatey","ChocolateyLastPathUpdate":"133094860264768127","ChocolateyToolsLocation":"C:\\tools","ComSpec":"C:\\windows\\system32\\cmd.exe","CommonProgramFiles":"C:\\Program Files\\Common Files","CommonProgramFiles(x86)":"C:\\Program Files (x86)\\Common Files","CommonProgramW6432":"C:\\Program Files\\Common Files","DXSDK_DIR":"C:\\Program Files (x86)\\Microsoft DirectX SDK (June 2010)\\","DriverData":"C:\\Windows\\System32\\Drivers\\DriverData","ELECTRON_RUN_AS_NODE":"1","EnforceProcessCountAcrossBuilds":"true","GOPATH":"C:\\Users\\krizd\\go","HOMEDRIVE":"C:","HOMEPATH":"\\Users\\krizd","LOCALAPPDATA":"C:\\Users\\krizd\\AppData\\Local","LOGONSERVER":"\\\\CALENDAROFAUGUS","LUA_DEV":"C:\\Program Files (x86)\\Lua\\5.1","LUA_PATH":";;C:\\Program Files (x86)\\Lua\\5.1\\lua\\?.luac","Medit_CHITUBOX_Basic_Bridge":"C:\\Program Files\\CHITUBOX V1.9.4","NUMBER_OF_PROCESSORS":"24","ORIGINAL_XDG_CURRENT_DESKTOP":"undefined","OS":"Windows_NT","OneDrive":"C:\\Users\\krizd\\OneDrive","OneDriveConsumer":"C:\\Users\\krizd\\OneDrive","PATHEXT":".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW;.wlua;.lexe","PROCESSOR_ARCHITECTURE":"AMD64","PROCESSOR_IDENTIFIER":"AMD64 Family 25 Model 33 Stepping 0, AuthenticAMD","PROCESSOR_LEVEL":"25","PROCESSOR_REVISION":"2100","PSModulePath":"C:\\Program Files\\WindowsPowerShell\\Modules;C:\\windows\\system32\\WindowsPowerShell\\v1.0\\Modules","PUBLIC":"C:\\Users\\Public","Path":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\\\Extensions\\Microsoft\\IntelliCode\\CLI;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\bin\\HostX64\\x64;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\VC\\VCPackages;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\TestWindow;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\TeamFoundation\\Team Explorer;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\MSBuild\\Current\\bin\\Roslyn;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Team Tools\\Performance Tools\\x64;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Team Tools\\Performance Tools;C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Common\\VSPerfCollectionTools\\vs2019\\\\x64;C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Common\\VSPerfCollectionTools\\vs2019\\;C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.8 Tools\\x64\\;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\FSharp\\Tools;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\Tools\\devinit;C:\\Program Files (x86)\\Windows Kits\\10\\bin\\10.0.19041.0\\x64;C:\\Program Files (x86)\\Windows Kits\\10\\bin\\x64;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\\\MSBuild\\Current\\Bin;C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\Tools\\;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\VulkanSDK\\1.2.182.0\\Bin;C:\\Program Files (x86)\\VMware\\VMware Player\\bin\\;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\Python39\\Scripts\\;C:\\Python39\\;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Windows\\System32\\OpenSSH\\;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\Microsoft VS Code\\bin;C:\\Program Files\\Git\\cmd;C:\\Program Files\\Git\\mingw64\\bin;C:\\Program Files\\Git\\usr\\bin;C:\\Program Files\\dotnet\\;C:\\Program Files\\CMake\\bin;C:\\Program Files\\Go\\bin;C:\\Program Files (x86)\\Lua\\5.1;C:\\Program Files (x86)\\Lua\\5.1\\clibs;C:\\Users\\krizd\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Program Files\\Oracle\\VirtualBox;C:\\Users\\krizd\\bin;C:\\Users\\krizd\\.dotnet\\tools;;C:\\Users\\krizd\\go\\bin;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\CMake\\CMake\\bin;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\CommonExtensions\\Microsoft\\CMake\\Ninja;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\VC\\Linux\\bin\\ConnectionManagerExe","ProgramData":"C:\\ProgramData","ProgramFiles":"C:\\Program Files","ProgramFiles(x86)":"C:\\Program Files (x86)","ProgramW6432":"C:\\Program Files","QtMsBuild":"C:\\Users\\krizd\\AppData\\Local\\QtMsBuild","SESSIONNAME":"Console","SystemDrive":"C:","SystemRoot":"C:\\windows","TEMP":"C:\\Users\\krizd\\AppData\\Local\\Temp","TMP":"C:\\Users\\krizd\\AppData\\Local\\Temp","USERDOMAIN":"CALENDAROFAUGUS","USERDOMAIN_ROAMINGPROFILE":"CALENDAROFAUGUS","USERNAME":"krizd","USERPROFILE":"C:\\Users\\krizd","Unicode":"😎😎😎","UseMultiToolTask":"true","VBOX_MSI_INSTALL_PATH":"C:\\Program Files\\Oracle\\VirtualBox\\","VK_SDK_PATH":"C:\\VulkanSDK\\1.2.182.0","VS140COMNTOOLS":"C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools\\","VSCODE_AMD_ENTRYPOINT":"vs/workbench/api/node/extensionHostProcess","VSCODE_CODE_CACHE_PATH":"C:\\Users\\krizd\\AppData\\Roaming\\Code\\CachedData\\e2816fe719a4026ffa1ee0189dc89bdfdbafb164","VSCODE_CWD":"C:\\windows\\System32","VSCODE_HANDLES_UNCAUGHT_ERRORS":"true","VSCODE_IPC_HOOK":"\\\\.\\pipe\\0f6018c0c9089cebcf67a449a361c5dd-1.75.0-main-sock","VSCODE_L10N_BUNDLE_LOCATION":"","VSCODE_NLS_CONFIG":"{\"locale\":\"en-gb\",\"availableLanguages\":{},\"_languagePackSupport\":true}","VSCODE_PID":"23108","VULKAN_SDK":"C:\\VulkanSDK\\1.2.182.0","windir":"C:\\windows","DevEnvDir":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\","Framework40Version":"v4.0","FrameworkDir":"C:\\Windows\\Microsoft.NET\\Framework64\\","FrameworkDIR64":"C:\\Windows\\Microsoft.NET\\Framework64","FrameworkVersion":"v4.0.30319","FrameworkVersion64":"v4.0.30319","INCLUDE":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\ATLMFC\\include;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\include;C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\include\\um;C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.19041.0\\ucrt;C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.19041.0\\shared;C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.19041.0\\um;C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.19041.0\\winrt;C:\\Program Files (x86)\\Windows Kits\\10\\include\\10.0.19041.0\\cppwinrt","LIB":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\ATLMFC\\lib\\x64;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\lib\\x64;C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\lib\\um\\x64;C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.19041.0\\ucrt\\x64;C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.19041.0\\um\\x64","LIBPATH":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\ATLMFC\\lib\\x64;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\lib\\x64;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Tools\\MSVC\\14.29.30133\\lib\\x86\\store\\references;C:\\Program Files (x86)\\Windows Kits\\10\\UnionMetadata\\10.0.19041.0;C:\\Program Files (x86)\\Windows Kits\\10\\References\\10.0.19041.0;C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319","NETFXSDKDir":"C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\","UCRTVersion":"10.0.19041.0","UniversalCRTSdkDir":"C:\\Program Files (x86)\\Windows Kits\\10\\","VCIDEInstallDir":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\IDE\\VC\\","VCINSTALLDIR":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\","VCToolsRedistDir":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\VC\\Redist\\MSVC\\14.29.30133\\","VisualStudioVersion":"16.0","VSINSTALLDIR":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\","WindowsLibPath":"C:\\Program Files (x86)\\Windows Kits\\10\\UnionMetadata\\10.0.19041.0;C:\\Program Files (x86)\\Windows Kits\\10\\References\\10.0.19041.0","WindowsSdkBinPath":"C:\\Program Files (x86)\\Windows Kits\\10\\bin\\","WindowsSdkDir":"C:\\Program Files (x86)\\Windows Kits\\10\\","WindowsSDKLibVersion":"10.0.19041.0\\","WindowsSDKVersion":"10.0.19041.0\\","WindowsSDK_ExecutablePath_x64":"C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.8 Tools\\x64\\","WindowsSDK_ExecutablePath_x86":"C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.8 Tools\\","VS160COMNTOOLS":"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community\\Common7\\Tools","CC":"cl.exe","CXX":"cl.exe","NINJA_STATUS":"[%s/%t %p :: %e] "}
[build] [1/2 0% :: 0.058] Re-checking globbed directories...
[build] [1/1 100% :: 0.190] cmd.exe /C "cd /D C:\openmw-dev\openmw\MSVC2022_64_Ninja\components && "C:\Program Files\CMake\bin\cmake.exe" "-DGIT_EXECUTABLE=C:/Program Files/Git/cmd/git.exe" -DPROJECT_SOURCE_DIR=C:/openmw-dev/openmw/components -DVERSION_IN_FILE=C:/openmw-dev/openmw/files/version.in -DVERSION_FILE_PATH_BASE=C:/openmw-dev/openmw/MSVC2022_64_Ninja -DVERSION_FILE_PATH_RELATIVE=resources/version -DOPENMW_VERSION_MAJOR=0 -DOPENMW_VERSION_MINOR=49 -DOPENMW_VERSION_RELEASE=0 -DOPENMW_VERSION=0.49.0 -DMACROSFILE=C:/openmw-dev/openmw/cmake/OpenMWMacros.cmake -DCMAKE_CONFIGURATION_TYPES=Debug;Release;RelWithDebInfo -Dgenerator_is_multi_config_var=1 -P C:/openmw-dev/openmw/components/../cmake/GitVersion.cmake"
[build] -- OpenMW version 0.49.0
[cmakefileapi-parser] Read reply folder: c:\openmw-dev\openmw\MSVC2022_64_Ninja\.cmake\api\v1\reply
[build] Build finished with exit code 0
[extension] [6665] cmake.buildAll finished (returned 0)
```
### Additional Information
This is with OpenMW, which, on Windows, uses a Bash script to set up dependencies and run CMake. The CMake's more fragile than it should be, so it's only really feasible to set up a build system with the script rather than a presets file, and it outputs to specific directories based on the build settings. That means
```json
"cmake.skipConfigureIfCachePresent": true,
"cmake.buildDirectory": "${workspaceFolder}/MSVC2022_64_Ninja",
"cmake.generator": "Ninja Multi-Config"
```
need setting in `settings.json` to make this extension work with it.
Contributor guide
Research direction
Locate the implementation of the CMake Tools sidebar's "Build All Projects" command and the code that assembles the logged CMake build command. Compare it with the selected-target path, then verify that the new command builds all projects without the selected target restriction and that its resulting build command behaves as requested.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, typescript
- Domain
- build-system, tooling
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100