Fix: CMake: Set Build Target shows all targets when using presets #4671
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This change addresses item #4509
This changes visible behavior
When using CMake Presets with build presets that define a
targetsfield, theCMake: Set Build Targetcommand now displays all available CMake targets from the code model, not just the preset-defined targets.The following changes are proposed:
showTargetSelector()that filtered targets to only preset-defined ones[Targets In Preset]option to target list when using presets with defined targetsTechnical Details
Before: Method returned early when
useCMakePresets && buildPreset?.targets, showing only:After: Adds preset option to full target list:
Users can now select from all 800+ targets in their project while retaining the ability to build preset-defined targets via
[Targets In Preset].Other Notes/Information
Files modified:
src/cmakeProject.ts: 12 lines changed (6 insertions, 7 deletions)CHANGELOG.md: Added bug fix entry under v1.23Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
0psvsblobprodwus2145.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/npm install(dns block)2wrvsblobprodwus2180.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)40vvsblobprodwus2135.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)/usr/local/bin/node node /usr/local/bin/npm install(dns block)b15vsblobprodwus2164.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)b53vsblobprodwus2154.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)d94vsblobprodwus2119.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)ezcvsblobprodwus2170.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/npm install(dns block)k4pvsblobprodwus2140.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)/usr/local/bin/node node /usr/local/bin/npm install(dns block)n6wvsblobprodwus2123.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)p2tvsblobprodwus2189.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)v41vsblobprodwus2175.vsblob.vsassets.io/usr/local/bin/node node /usr/local/bin/yarn install(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
This section details on the original issue you should resolve
<issue_title>[Bug] Running command
CMake: Set Build Targetdoes not show available targets in build folder</issue_title><issue_description>### Brief Issue Summary
Reproduce:
Expected to see a list of buildable cmake targets to select a build target from.
Bug: Actually just saw one build preset name and
[Targets In Preset]CMake Tools Diagnostics
{ "os": "win32", "vscodeVersion": "1.101.0", "cmtVersion": "1.20.53", "configurations": [ { "folder": "d:\\workspace\\mw2", "cmakeVersion": "4.0.2", "configured": true, "generator": "Ninja", "usesPresets": true, "compilers": { "C": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe", "CXX": "C:/Program Files (x86)/Microsoft Visual Studio/2019/Professional/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe" } } ], "cpptoolsIntegration": { "isReady": true, "hasCodeModel": true, "activeBuildType": "RelWithDebInfo", "buildTypesSeen": [ "RelWithDebInfo" ], "requests": [], "responses": [], "partialMatches": [], "targetCount": 810, "executablesCount": 188, "librariesCount": 615, "targets": [] }, "settings": [ { "communicationMode": "automatic", "useCMakePresets": "auto", "configureOnOpen": true } ] }Debug Log
Additional Information
The cmake.loggingLevel debug output is when I select
[Targets In Preset].Other features (like selecting debug or launch targets) correctly display all available cmake targets so that I can choose from them. But for some reason
CMake: Set Build Targetdoes not show all targets (and not even all my build presets, but thats unrelated to this case)My current workaround is: Click the
CMakebutton on the left (showingPROJECT STATUS,PROJECT OUTLINE, etc.)Then I go to PROJECT OUTLINE -> Search my target I want to build -> Right click ->
Set as Build Target. Then it correctly sets the build target for the cmake extension (showing that it works to just set build targets that have no preset, its just not possible via theCMake: Set Build Targetcommand.</issue_description><agent_instructions>ou are Copilot coding agent acting as a senior maintainer/contributor for the VS Code extension repository microsoft/vscode-cmake-tools.
You are deeply familiar with CMake, CMake Presets, CTest, kit/toolchain selection, VS Code extension APIs, and the architecture of this repo (TypeScript-heavy).
Your job is to resolve the GitHub issue provided below safely and in a maintainable way, matching existing patterns and UX.
SOURCE OF TRUTH
[Bug] Running command
CMake: Set Build Targetdoes not show available targets in build folder #4509 - Bug [Bug] Running commandCMake: Set Build Targetdoes not show available targets in build folder #4509NON-NEGOTIABLE PROCESS
CMake: Set Build Targetdoes not show available targets in build folder #4509💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.