Features:
- Add support for Presets v9, which enables more macro expansion for the
include
field. #3946 - Add support to configure default folder in workspace setting. #1078
Improvements:
- Fix "Unable to resolve configuration with compilerPath" issue for Swift. #4097
- Ensure that any uses of
proc.spawn
work, especially for .bat and .cmd files, due to VS Code updating to Node 20. #4037 - Fix "Test output isn't visible when failed" and also mark skipped tests as so. #4116
- Ensure that stopping tests actually forces the tests to stop running. #2095
- Retire the Show Options Moved Notification #4039
- Improve the pinned commands experience by defaulting settings and using VS Code state rather than modifying user settings. #3977
Bug Fixes:
- Fix issue where setting test suite delimiter prevent execution of all tests. #4092
- Fix our setting of
isUserPreset
for presets, only set it totrue
if it's defined in a user presets file. #4059 - Fix issue where duplicate presets are being listed in dropdown. #4104
- Ensure that we're sanitizing paths for
cmake.copyCompileCommands
. #3874 - Ensure that tests are updated after a build. #4148
- Fix various GCC compiler errors and GCC linker errors not showing up in Problems View #2864
- Fix reloading presets when included files are changed or renamed and updated. #3963
Improvements:
- Update signing to support VSCode extension signing. #4055
Bug Fixes:
Bug Fixes:
- Fix env expansion of all variables (toolchainFile, etc.) in presets. #4019
- Fix issues with inheritance and presets. #4023
Features:
- Add setting
cmake.useVsDeveloperEnvironment
to allow for more user control on when the Visual Studio Developer Enviornment is attempted to be added to the CMake Presets environment. #3892
Improvements:
- Add
Unspecified
option for selecting a kit variant to allow CMake itself to select the build type. #3821 - Skip loading variants when using CMakePresets. #3300
- Resolve diagnostics files relative to workspace and build directory, fixes #1401 @fargies
- Add setting to only show the cmake log on target failure. #3785 @stepeos
- Preset expansion occurs on
CMakePresets.json
orCMakeUserPresets.json
save, and if there are no errors the expanded presets are cached. The VS Developer Environment will only be applied to a preset if it is selected. Expansion errors will show in the problems panel and preset files with errors will be invalid, and any presets they contain cannot be used. #3905 - Remove pop-ups asking to configure, default
cmake.configureOnOpen
totrue
. #3967
Bug Fixes:
- Attempt to fix stringifying the extension context. #3797
- Fix issue where
cmake.preferredGenerators
wasn't falling back to the next entry when the first entry didn't exist. #2709 - Potential fix for attempting to load a non-variants file as a variants file and throwing a parse exception. #3727
- Fix issue where
cmakeUserPresets.json
not showing up in project outline. #3832 - Fix edge case where parsing tests fails when additional output is printed before tests json. #3750
- Fix issue where
Configure with CMake Debugger
fails on restart because the previously used pipe to CMake Debugger is no longer available. #3582 - Fix custom kit PATH being overriden. #3849
- Fix debug variables being overriden. #3806
- Fix issue in Quick Start where a C file was generated in place of a C++ file. #3856
- Fix custom build tasks not showing up. #3622
- Fix the bug where if a relative path specified for
installDir
, it is not calculated relative to the source directory, which is how it should be according to the CMakeinstallDir
docs here. #3871 - Fix issue with CMakeLists.txt depth search. #3901
- Fix localized file path for schema files. #3872
- Disable annoy and invalid extenion message about fix windows sdk for MSVC 2022. #3837
- Fix re-using a terminal for launching even when the environment has changed. #3478
- Fix our keybindings for debug and run without debugging to better match VS Code. #3507
- Allow success recovery in the configure precondition handler. #3554
- Prevent second configure after
QuickStart
if theautomaticReconfigure
setting is enabled. #3910 - Set usepresets context after manually creating a CMakePresets.json/CMakeUserPresets.json or using QuickStart to create it. #3854
- Only do special handling of
~
for code model reply path on linux. #3957 - Fix issues with expanding unnecessary environment variables and incorrectly saving preset environments to cache. Also fixes expansion error reporting issue with not checking for an invalid Configure preset in other types of presets. #3961 & #1841
Bug Fixes:
- Infrastructure fixes.
Features:
- Upgrade
cmake_minimum_required
version 3.0.0 -> 3.5.0. #3793
Improvements:
- Add setting for deleting entire build dir when clean configuring. #3515
Bug Fixes:
- Fix issue "Logs are unavailable when running tests from the Test Explorer" and display properly the test output. #3140
- Fix issue with "Test Results Not Found" when
cmake.ctest.allowParallelJobs
is disabled. #3798 - Update localized strings for Project Status UI and quick pick dropdowns. #3803, #3802
- Fix issue where new presets couldn't inherit from presets in CmakeUserPresets.json. These presets are now added to CmakeUserPresets.json instead of CmakePresets.json. #3725
- Fix issue where CMakeTools does not recheck CMake Path to see if user installed CMake after launching VS Code. 3811
- Fix issue where
cmake.buildToolArgs
was sometimes applied incorrectly when presets are used. #3754 - Fix issue where
preferredGenerator.platform
andpreferredGenerator.toolset
wasn't being compared between the old and new kit to trigger a clean configure on a kit selection change. #2699 - Still allow for users to add
--warn-unused-cli
. Now instead of overriding, it will remove our default--no-warn-unused-cli
. #1090 - Ensure
useCMakePresets
context is set after making a CMakePreset.json withQuick Start
. #3734
Bug Fixes:
Features:
- Add the possibility to open the current build directory in the Explorer. #1451
- Add support for CMakePresets V7 and V8. #3549
- Update
api.ts
to add theonSelectedConfigurationChanged
event. #3671 @OrkunTokdemir - Improve CMake QuickStart by allowing the user to dynamically create a CMakePresets.json file. #3649
Improvements:
- Allow ctests to run in parallel when launched through the Test Explorer. #3122
- Properly set up environment for MSYS toolchains. #2447 @Steelskin
- Allow for users to add
--warn-unused-cli
. This will override our default--no-warn-unused-cli
. #1090 - Add option to disable kit scan by default when a kit isn't selected. #1461
- Show cmake output when version probe fails. #3650
- Improve various settings scopes #3601
- Refactor the Project Outline view to show a flat list of targets #491, #3684
- Add the ability to pin CMake Commands to the sidebar #2984 & #3296
- Add support for variable expansion in
debugConfig.environment
#3711 - Add the ability to debug install targets #532
- Add a "Don't Show Again" option in the select CMakeLists.txt.
- Log error statement if the environmentSetupScript fails. #3566
- Sort CMakeLists.txt by depth during selection #3789 @jmigual
- [Experiment] Improve CMake Tools experience when opening a folder #3588
Bug Fixes:
- Fix localization issue in package.json. #3616
- Remove incorrect validation which was breaking references from CMakeUserPresets to CMakePresets. #3636
- Fix 'Debug Test' from 'Test explorer' results in 'launch: property 'program' is missing or empty'. #3280
- Fix "Go to source" in Testing activity + test panel without function. #3362
- Remove an un-implemented "internal" command. #3596
- Fix incorrect test output. #3591
- Fix issue where our searching for cl and ninja was repeatedly unnecessarily, impacting performance. #3633
- Fix preset environment issue. #3657
- Fix invocation of vcvarsall.bat script argument for targetArch. #3672
- Ensure that we support ${workspaceFolder} when initializing cmake information. #3658
- Fix issue where correcting
cmake.cmakePath
is still broken. #3570 - Fix CMakePresets.json schema validation. #3651
- Update what we use to create the workspace browse configuration to pass to cpp tools by filtering out extra file groups that are generated. #3729
- Fix issue where
cmake.cacheInit
isn't supporting absolute path in environment variables. #2777
Bug Fixes:
- Fix the regression for inheritance of cache variables and other inheritable fields. #3603
Bug Fixes:
- Fix an issue where we weren't able to run tests when not using Presets. #3589
- Fix the order of preference for CMake Presets
inherit
field. #3594
Features:
- Update
api.ts
to add thegetActiveFolderPath
method. #3528 @Kemaweyan - Add a setting that allows users to enable/disable the Test Explorer integration. #3145
- Add support for CMake Presets V6 (package presets to run CPack and workflow presets). #2871
- Add support for pinning CMake commands to the side bar. #3296
Improvements:
- Improve when the "Configure with Debugger" popup appears and allow for "Do Not Show Again". #3343
- Add option to disable "Not all open documents were saved" popup. #2889
- Allow overriding of CMakePresets cache variables and arguments. #1836
- Improve advanced status bar options configuration by adding an
inherit
option to thestatusBarVisibility
setting and by adding theinheritDefault
setting. Look at the CMake Options Visibility Configuration docs for more information. #3452
Bug Fixes:
- Fixed an issue where changing an empty value to a non-empty value using the Cache Editor UI didn't work. PR #3508
- Fix CMakePresets inheritance for the
condition
field. PR #3494 - Ensure that the output is cleared for
debugTarget
andlaunchTarget
. #3489 - Fix the inheritance of the
environment
for CMakePresets. #3473 - Removed an unnecessary
console.assert
#3474 - Avoid running tests after a build failure #3366
- Make sure we clear the output on builds due to test when
Clear output before build
is enabled. #1179 - Ensure that, when switching between presets, the CMake executable is modified. #2791
- Fixed the key to reference the correct description for the
compact
option of thecmake.options.advanced.variant.statusBarVisibility
setting. #3511 - Fixed the parsing of C and CXX compiler cache variables when adding a new configure preset from existing compilers. #2773
- Avoid the pitfalls of using
RegExp.exec()
in loops, replacing their usage withstring.matchAll()
. This change is applied to the expand.ts file which deals with expansion of variables in user provided strings. It may address the failures described in issue. #3469 - Fixed
compile_commands.json
file corruption withcopyCompileCommands
when value is equal to default path. #3214 @parniere - Fixed status bar visibility options'
inherit
option default. PR #3579
Improvements:
- Improve our "smarts" when we attempt to provide PATH's for compilers or ninja. PR #3458
Bug Fixes:
- Refactor our attempt to add VS paths to PATH for cl, clang, etc. so that we fix issues with using the wrong compiler. PR #3449
Bug Fixes:
- Fixed an issue where finding cl.exe and ninja from Visual Studio was broken. PR #3445
Features:
- Support different debug config for different targets. PR #2801 @RichardLuo0
- Add ability to get a test's
WORKING_DIRECTORY
in launch.json viacmake.testWorkingDirectory
PR #3336
Improvements:
- Updated debugging documentation to add the LLDB configuration needed for macOS. PR #3332 @slhck
- In multi-root workspace, the Project Outline View now shows all configured projects. PR #3270 @vlavati
- Added script mode and ability to connect to externally launched CMake processes. PR #3277
- Added buttons to the project nodes in the Project Outline View. PR #3354 @vlavati
$penv{}
macros are expanded ininclude
paths in CMakePresets.json as long asversion
is 7 or higher. #3310- Disable search and select of CMakeLists.txt, if user chooses not to configure project without CMakeLists.txt in the root. PR #3276 @vlavati
- If the "configure" button of CMakeLists.txt node in the Project Outline is clicked, only the corresponding project is configured. PR #3372 @vlavati
- Added a command to directly open the extension settings (
CMake: Open CMake Tools Extension Settings
) and a gear icon button in the Project Status View title bar that calls it. PR #3403 - Added an icon button in the Project Status View title bar that calls the
CMake: Delete Cache and Reconfigure
command. PR #3403 - By default, all of the status bar options are hidden except
build
,debug
, andlaunch
. All of the previous status bar options are now, by default, visible in the Project Status View. These visibility settings can be customized in thecmake.options.advanced
setting. This setting can also be accessed via the Project Status View. Thecmake.useProjectStatusView
setting is now removed. PR #3407 & PR #3417
Bug Fixes:
- Fix Unhandled Exception if no args are specified in
cmake.getLaunchTargetFilename
inside an input context of a task. PR #3348 @vlavati - Fix incorrect IntelliSense configuration with default/empty
CMAKE_BUILD_TYPE
using CMakePresets. PR #3363 @deribaucourt - Paths containing
mingw
are no longer removed from thePATH
environment variable because the selected MinGW kit is added before thePATH
environment variable, rather than after. #3220 - Fix a bug where
CMake: Show Configure
orCMake: Show Build
commands would run them. #3381 @AbdullahAmrSobh
Features:
- Added support for the CMake Debugger. #3093
- Added support for passing a folder parameter to the
cmake.selectActiveFolder
command. #3256 @cvanbeek
Improvements:
- When using CMake presets, the Project Status View now shows the build target along with the build preset. PR #3241
- IntelliSense resolves headers coming from MacOS frameworks. CMake 3.27 or later is required. #2324
- Allow configure settings to override the usual arguments the extension is usually passing to cmake. Don't have unremovable options. #1639
- Allow a way to run CTests in parallel by setting
cmake.ctest.allowParallelJobs
totrue
. #3091 - When clicking
Run CTests
from the status bar view, it now will bypass the Test Explorer and directly run the CTests. #3151
Bug Fixes:
- Fix per-folder browse configurations returning incorrect information. #3155
- Fix triggers of "Bad CMake Executable" error message. #2368
- Don't ignore empty cache string variables when configuring from presets. #1842
- Fix active build configuration warning coming from CppTools. #2353
- Fix our checking for invalid settings when CMakeUserPresets version is different than CMakePresets. #2897
- Fix the precendence order that we evaluate the
cmake.parallelJobs
setting. #3206 - Decreased the number of cases where we reconfigure erroneously upon usage of
cmake.getLaunchTargetPath
. #2878
Bug Fixes:
- Set
Cmake: Use Project Status View
tofalse
by default. This setting may be subject to A/B experimentation in 1.14 releases. To opt-out of experimentation, set thecmake.useProjectStatusView
setting explicitly insettings.json
. PR #3199
Features:
- Add a new UI to show the project status in the side bar. This feature appears and replaces the status bar when
Cmake: Use Project Status View
is toggledtrue
. This will be used for A/B testing the views. PR #3167
Improvements:
- Added ability to select either C or C++ with the Quick Start commmand. #3183
Bug Fixes:
- Handle multiple test results in one test run. #3160
- When starting test and test preset is not selected, prompt for test preset selection. #3163
Bug Fixes:
- When
cmake.buildTasks
istrue
, CMake tasks intasks.json
that do not specifytargets
will no longer cause the build to fail. #3123 - Paths containing
mingw
are no longer removed from thePATH
environment variable when configuring a project without specifying a kit. #3136 - Warning messages are no longer triggered by targets containing "warning" in the file path when running
Tasks: Run Build Task
. #3118 - Unable to resolve
cmake-tools-schema:/schemas/CMakePresets*.json
. #2587 #3108
Bug Fixes:
- Fix extension crashes in the test explorer when
cmake.sourceDir
is a subfolder of${workspaceFolder}
. #3121
Features:
- Test Explorer. PR #3032
- Add commands revealTestExplorer, refreshTests, and refreshTestsAll. PR #3032
Breaking changes:
- The
Run CTest
button in the status bar now only reveals the test explorer, and test results are removed from its text. PR #3032 - All test starting method, such as command
CMake: Run Tests
and test task, now runs through the test explorer. Tests can't run in parallel for now. PR #3032 - Catch test framework support is removed. PR #3043
- Rename
cmake.mingwSearchDirs
tocmake.additionalCompilerSearchDirs
, make it more general and fix quirks with it. PR #3056 @philippewarren
Improvements:
- Automatically configure CMake project directories when the kit or the configuration preset is changed. PR #2973 @maxmitti
- Add an optional description field to kits. PR #2944 @TisziV
- Update documents on
cmake.mingwSearchDirs
. #2996 - When starting debugging, also build the selected build target. PR #2987 @Maddimax
- Add support for CMake Presets V5. #2979
- Print the build time in the output window. #3008
- Allow using all of MSYS2 MinGW installations, which are also now found by default while scanning for kits if MSYS2 is installed at the default location (
C:\msys64\{wingw64|mingw32|clang64|clang32|clangarm64|ucrt64}\bin
). PR #3056 @philippewarren
Bug Fixes:
- Check if "CMakeLists.txt" exists after renaming. #2986
- CMake kits fails when parsing exported functions after running environmentSetupScript. #2676
- Implement cmake.parseBuildDiagnostics. #1932
- CMake tools not fully loaded when opening multi-project folders. #3000
- Save the state of multiple projects in the same folder. PR #3051
- Expand variables in task's targets while searching matching taks. #2970 @piomis
- Fix typo in
cmake.skipConfigureWhenCachePresent
. #3040 @Mlekow - Fix MinGW detection when not in PATH using
cmake.mingwSearchDirs
(now namedcmake.additionalCompilerSearchDirs
). PR #3056 @philippewarren - Fix check for
EACCES
error code #3097
Bug Fixes:
- Remove unwanted warning "Configuration is already in progress" in multi-root projects. #2989
setKitByName
command ignores the workspace folder argument. PR #2991
Bug Fixes:
- Compatibility between test and build presets was not enforced. #2904
- Fix problems with updating the code model. #2980
- Validate presets in initialization. #2976
Bug Fixes:
- Fix an issue causing the Add Presets commands not to appear. PR #2977
Bug Fixes:
- Fix failed activation when using the
cmake.allowUnsupportedPresetsVersions
setting. #2968 - Verify binary directories only if there are multiple sources. #2963
- Update quote function to fix path separator regression #2974
Bug Fixes:
- Fix "No folder is open" error when running quick start. #2951
- Add a control statement to the 'quote' function in shlex.ts to return the string without quotes. [#2955] (#2955)
- CMake Tools fails to initialize the Active Project. #2952
Improvements:
- Support multiple projects in a single workspace folder.
cmake.sourceDirectory
setting now allows setting multiple paths. #1374 - Add a setting to disable reading
compile_commands.json
. #2586 @xiaoyun94 - Preset in CMakeUserPresets.json using "condition" does not appear in configure preset selection. #2749
- Resolve workspace variables in
cmake-kits.json
. #2737 - Use upper case drive letters on Windows for
cmake.sourceDirectory
. PR #2665 @Danielmelody - Custom browse configuration should not include (redundant) per-file arguments. #2645
- Support optional generator in
configurePresets
for version 3 and higher. #2734 @jochil - Add a public API for extension authors that depend on CMake Tools. #494
- Support explicit typing in
cmake.configureSettings
. #1457 - Scan for kits will now add ARM64 hosts for MSVC. PR #2887 @scaryrawr
- Support canceling configuration #2436 @Danielmelody
- Pop up "Choose CMakeLists.txt" when user goes to configure while feature set is partially activated. #2746
- Adhere to the setting entry "Parallel Jobs" (
cmake.parallelJobs
) when generating the default build preset. #2765 @maxmitti - Add a setting to ignore unknown presets features from the versions that CMake Tools doesn't support yet. #1963
Bug Fixes:
- Fix warning message that appears when using a default build preset with a multi-config generator. #2353
- Update kits documentation. #2761 @jdeaton
- Avoid calling build tasks for "Clean", "Install" and "Run Tests" commands when "cmake: buildTask" setting is true. #2768
- Generate the correct
configurePresets
for Clang or GCC compilers on Windows. #2733 - CMake Tools does not send
--target=
to cpptools. #1896 #2800 - Fix the build task to return the error code. #2799 @BIKA-C
- Generate correct ClangCL Kits. #2790 #2810
- Cache the version check for the cmake executable. #2818
- ctest -N does not work with custom cmake path from preset. #2842
- Resolve variables in args before passing them to the terminal. #2846
- Quote launch arguments sent to the terminal if they have special characters. #2898
- CMake Tools should choose cmake.exe from the newest VS when it's not found in the PATH. #2753
- Calling build targets from CMake Project Outline always builds default target if useTasks option is set. #2778 @piomis
- Fix
${command:cmake.buildType}
so that it returns the right value when using CMake Presets. #2894 - Fix a problem with multi-root projects not activating the configuration provider. #2915
- Remove the default path for
cmake.mingwSearchDirs
since the path is world-writable. PR #2942 - Build command is not able to properly pick-up tasks from tasks.json file if configured with isDefault option and cancellation of running build task is not working. #2935 @piomis
Bug Fixes:
- Add default target to the build task when target is not defined. #2729
Improvements:
- Support for presets version 4. #2492 @chausner
- Triggering reconfigure after changes are made to included files. #2526 @chausner
- Add target name to terminal window name for launch. #2613
- Add support for "preset" and "env" in task provider. #2636 #2553 #2714 #2706
- Add Craig Scott's "Professional CMake" book to the list of resources in doc/faq.md for learning CMake. #2679 @david-fong
Bug Fixes:
- CMakeUserPresets.json version not detected without CMakePresets.json. #2469 @chausner
- Do not prompt to select a Kit if
cmake.configureOnOpen
isfalse
. #2538 - Don't delete CMakeCache.txt when switching kits if the buildDirectory also changes. #2546 @david-fong
- Set the working directory for the file api driver. #2569
- Add "description" properties to the cmake.revealLog setting. #2578
- Detect clang-cl.exe compilers that are not bundled with Visual Studio. #2622
- Clear output channel after auto-reconfigure. #2628
- Fix issues with launching the target in PowerShell terminal. #2650 #2621 #535
- Respect VS Code setting "insertSpaces" when updating preset files via GUI. #2677
- CMake install task does not run in terminal. #2693
- Deprecation warnings show up as errors in Problems view. #2708
- Revert back to the previous CMake language server extension dependency. PR #2599
Bug Fixes:
- Ninja is used as a default generator. #2598
Improvements:
- Fix build Error: EMFILE: too many open files. #2288 @FrogTheFrog
- Add commands to get preset names. PR #2433
- Add IntelliSense support for
debugConfig.console
. #2428 - Add c++23 support. #2475 @sweemer
- Add support for multiple targets in the CMake task provider. #2122
- Add setting
cmake.showSystemKits
. PR #2520 @bharatvaj - Add support for "Configure", "Install" and "Test" tasks. #2452
- Add setting
cmake.ignoreCMakeListsMissing
. PR #2537 @ilg-ul - Add support for "Clean" and "Clean Rebuild" tasks. #2555
- The extension for CMake language support is replaced. PR #2267 @josetr
Bug Fixes:
Clean All Projects
menu item builds rather than cleans. #2460- Update terminal's environment variables when the kit is changed. #2364
- Add timeouts for compiler scanning. #1289
- Fix schema validation for presets version 4. #2490
- Remove problematic environment variables from the debugger environment. #2442
- Fix preferredGenerator "Watcom WMake" not working. #2500
- When
debugConfig
has specific modes or debugger paths set, the linker check heuristic should be skipped. #2509 - Exclude environment variables from debugging if the values have newlines. #2515
- Correctly configure the build environment when using VS 2015 and Ninja in CMakePresets.json. #2516
- Select the correct VS toolset for Ninja generators with CMake Presets. #2423
- Fix unhandled exception with CMakePresets.json. #2117
- Fix issues with compiler argument quoting when configuring IntelliSense. #2563
- Fix clang version detection regexes. PR #2549 @chausner
Bug Fixes:
- fix "CMake: compile active file" command. #2438
Improvements:
- Don't specify number of jobs when building with Ninja. #696
- Support for the Ninja Multi-Config generator. #1423
- Minimize build progress notification to the status bar. #2308
- Allow editing Kits when presets are in use. #1965
- Launch the target in the default terminal. PR #2311 @michallukowski
- Allow launching targets in parallel. #2240 @ColinDuquesnoy
Bug Fixes:
- CMakePrests.json toolset requires the VS version instead of the toolset version. #1965
- CMakePresets should be able to specify a VC toolset by version number. #2366
- CMake task provider does not configure the VS Build environment for Ninja builds. #2258
${buildKit}
is not updated after a Kit switch. #2335- Test the existence of a property instead of the value when expanding preset conditions. #2329
- Include
hostSystemName
in variable expansion when only using User presets. #2362 - Trim whitespace from
environmentSetupScript
. #2391 - Incorrect
cmake.additionalKits
setting breaks CMake extension. #2382 - VS2010 compile errors are not shown in Problems. #2376
- Always rebuilds sources with autodetected clang and ninja on linux. #2289
- Clean Reconfigure All Projects removes wrong files after switching kit. #2326
- Update documentation. #2334 @atsju
- Ninja not able to build single-threaded. #2222
- Fix various kit detection issues. #2246 #1759 #1653 #1410 #1233 @fourdim
- Stop using
-H
to configure projects. #2292 environmentSetupScript
capitalizes environment variable names. #1592 @lygstate- Debug Target failed when
debugConfig.environment
not present. #2236 @lygstate - Presets in CMakePresets.json should not inherit from presets in CMakeUserPresets.json. #2232
- Refresh the launch terminal if the user default changes. PR #2408
- Strip BOM from files when reading. #2396
- When using the configuration provider for the C++ extension, the browse configuration was not being updated after code model changes. #2410
Bug fixes:
- Fix infinite recursion into symlinks. #2257
- Fix
Show Build Command
for folders that do not use CMake Presets. #2211 - Fix presets not shown when a common dependency is inherited more than once. #2210
- Fix IntelliSense usage of short name from variants file for buildType. #2120 @gost-serb
Bug fixes:
- Fix presets using conditions with macros and inheritance. #2185
- Parallelism no longer working in 1.9.0 for CMake < 3.14.0. #2181
CMake: Compile Active File
command stopped working in v1.9.0. #2180- Exception after successful build when cpptools IntelliSense is disabled. #2188
- Fix issue with presets (v3) and "toolchainFile". #2179
- Don't add
-j
argument whencmake.parallelJobs
is set to1
. #1958 @mark-ulrich - Warn the user about CMAKE_BUILD_TYPE inconsistencies. #2096
Improvements:
- Add support for CMakePresets version 3. #1904
- Add diagnostic support for parsing IAR compiler output. PR #2131 @willson556
- Add "Log Diagnostics" command. PR #2141
- Add build and configure commands to show cmake commands without running them. PR #1767
- Implement support for merging multiple compile_commands in super-builds sub-folders of the build directory. PR #2029 @Felix-El
- Add
cmake.allowCommentsInPresetsFile
setting to allow JS style comments in CMakePresets files. #2169
Bug fixes:
- MSVC_VERSION is incorrect when cmake configures with clang-cl. #1053 @tklajnscek
- Build error because
binaryDir
removed after configure. #2128 - Configuration from build presets ignored by Intellisense and launch (when using multi config generators). #2099
- Extra {0} output message when having preset with circular inherits. #2118
- CMake-Tools does not reconfigure after a change of CMakeLists.txt in a subdirectory of root. #1911 @AbdullahAmrSobh
- Fixes msvc2015 detection when only vs2019 are installed. #1955 @lygstate
- Allow for clang compilers to be set in presets without full path. #1922
- Compiler flags containing spaces not passed correctly to IntelliSense. #1414
- Don't scan the whole workspace for CMakeLists.txt, just a few folders. #2127
- Regression with Visual Studio generator and non-default toolset. #2147
- Debug shows "No compiler found in cache file." dialog. #2121
- Unable to work with pre-configured projects (cache is deleted). #2140
- Unknown C/C++ standard control flags: -std=gnu++2b and -std=c2x. #2150
- Select the most recently used build/test preset when configure preset changes. #1927
- Re-enable build target selection when using presets. #1872
Bug fixes:
- Command substitutions in launch.json are broken. #2091
cmake.configureOnOpen
setting is ignored. #2088- User-defined preset not shown when inheriting from
CMakePresets.json
. #2082 - Fix presets using server API. #2026
Improvements:
- Last selected target isn't read on start up. #1148
- Use cached cmake-file-api response to configure IntelliSense on startup. #1149
- Show a quickPick of all the CMakeLists.txt inside the project (if none exists where "cmake.sourceDirectory" points at). #533
- Add command to get the active folder of a workspace. #1715 @guestieng
- Task provider refactoring to best utilize latest updates from VSCode. PR #1880
- Add docker container definition. PR #1758
- Enhance the vsix build with package scripts in package.json. PR #1752 @lygstate
Bug fixes:
- Fix various presets field settings to be passed correctly on to CMake. #2009
- Check for target architecture when reading toolchain FileAPI. #1879
- Fix environment variable in debugging docs. PR #1874 @zariiii9003
- Fix typo in variant docs. PR #1970 @melak47
- Update schema for preset cache variable CMAKE_BUILD_TYPE. #1934
- Fix regression in ctestDefaultArgs (ctest hardcoded directives: -T, test, --output-on-failure). #1956
- Don't throw when unknown diagnostics apepar. #1796
- Add parse target triple to fix "bad clang binary" error. #1916 @lygstate
- Include CMAKE_BUILD_TYPE in the generated text of configure preset. #1847
- Show also the "hidden" presets in the "Inherit from configure presets" quick pick. #1923
- Clang-cl diagnostics don't appear in Problems view. #517 @ki-bo
- Fix duplication in name of MSVC versus LLVM Clang kit. PR #1951 @lygstate
- Fixes output encoding in the vcvars setup process. PR #1985 @lygstate
- Remove vendor support since the string expansion is wrong for it. #1966
- Add configure preset environment to debug/launch. #1884
- Fix msvc2015 detection when only vs2019 is installed. #1905 @lygstate
- Prevent file index overwritting in multi-config generators. #1800 @andredsm
- Various cache variables edit/save fixes. PR #1826 @aemseemann
- Use JSON as the language mode of preset files. #2035
- Fix broken links to contributing file. PR #2016 @andredsm
- Kit scan generates incorrect kits for VS 2022 #2054
- Fix presets for msvc compilers with x86 outputs PR #2072
Bug fixes:
- Make sure CMake Tools configuration provider gets registered with presets on. #1832
- Add the license field to package.json. #1823
- Add title to "Select target" quickpick. #1860
Bug fixes:
- Fix paths of target sources outside the workspace. #1504 @sleiner
- Use stricter type checks in presets expansion. #1815
- Solve conflict between -DCMAKE_GENERAOR:STRING=Ninja versus -G "Visual Studio 16 2019" -A x64. PR #1753 @lygstate
- Fix operator precedence when getting code page. #1615 @taoyouh
- Override the locale when querying compiler versions. #1821
- Fix typo in CMakePresets.json schema. PR #1809 @bluec0re
Improvements:
- CppTools-API v5 integration. #1624
Bug fixes:
- Correct macros evaluation in inherited presets. #1787
- Macro expansions should consider environment variables defined in the kit. #1250
- Fix 1.7.0 IntelliSense regression related to default standard and CppTools provider version. #1788
- Correct folder information for presets in multi-root projects. PR #1785
Improvements:
- Support for CMake Presets. #529
- Support for File API "toolchains" object.
- User defined additional kits. PR #1701 @mjvankampen
- Touchbar extra functionality. PR #1693 @poterba
Bug fixes:
- Can not compile active file if definition has quoted text. #969
- Compiler flags containing spaces not passed correctly to IntelliSense. #1414
- Gcc/clang version analysis improvements. #1575
- Disable the extension when no CMakeLists is present. #1578
- Remove the "CMake Tools initializing" popup message. #1518
- Allow CppTools to chose a C/Cpp standard default. #1477
- Added ${workspaceHash} variable. PR #1055 @Zingam
- Setup CMT_MINGW_PATH properly on win32. PR #1611 @lygstate
- Codespaces specific changes of configureOnOpen default and popup UI. #1676
- Fixes environment expanding and document testEnvironment. PR #1598 @lygstate
- Pass cmake.debugConfig.args to launch target. PR #1603 @jbdamiano
- Dependencies package versions upgrade. PR #1475 @lygstate
- Add vendor hostOs targetOs targetArch versionMajor versionMinor attributes for kit. PR #1337 @lygstate
- Always correctly build target executable path. PR #1674 @falbrechtskirchinger
- Use variables instead of hardcoded values for system path references. #883 @Zingam
- ctestPath should allow the same substitutions as cmakePath. #785 @FakeTruth
- Change the order of available kits such that folder kits come first. #1736
- Fix "Configuring project" infinite loop when using "Locate" on a project without CMakeLists.txt. #1704
- Fix problems with using gdb debugger on MAC. #1691
- Fix parsing of target architecture flags with values that include arm64. #1735
- Changed ctest --output-on-failure from hardcode to default argument. PR #1729 @PedroLima92
- Update cmake-settings.md document. PR #1754 @lygstate
Bug Fixes:
- Fix Clang kit detection when version is at end of line. #1342 @falbrechtskirchinger
- Fix cache variables regular expression dealing with '='. #1613
- Add cmake.exportCompileCommandFile. #1440
- Fix the regexp of Gcc/Clang version to account for localization and more possible text patterns. #1575
- Fix regexp for compiler flags that contain spaces. #1414
- Fix compile active file when definition has quoted text. #969
- Re-register the tasks provider when the current build targe changes. #1576
- Don't localize the VS Clang kit name. PR #1632
- Remove CMake Tools activation of non CMake projects when tasks.runask is executed. PR #1642
- Add the TWXS CMake extension in the CMake Tools extension pack. PR #1643
Bug Fixes:
- "Clean all projects" broken since 1.5.0. #1542
- CMake task provider should not attempt to register until the CMake driver is available. #1549
Bug Fixes:
- Fix deadlock caused by commands invoked in string expansion during activation. PR #1532
Bug Fixes:
- Fix regular expression for variables values used in settings and kits json. #1526 #1525
- Add a setting to control whether the Touch Bar is visible or not. PR #1529
Improvements:
- Support variables for Kit.toolchainFile. PR #991 #1056 @blakehurd/@bobbrow
- Implement cmake:hideBuildCommand context option. PR #1355 @tritao
- Add option to set CMAKE_BUILD_TYPE also on multi-config generators. PR #1393 @tonka3000
- Detect Clang for MSVC (GNU CLI) kits. #823 @omcnoe
- GUI support for CMake Tools cache. #513 @nieroger
- Tasks support. PR #1268 @vptrbv
- MacBook Pro touchbar support. #499 @vptrbv
Bug Fixes:
- Set right base_path for variant config files. PR #1462 @leolcao
- Inconsistent buildType substitution. #1366
- ${workspaceFolder} is not working for "environmentSetupScript" option. #1309 @Yaxley123
- Preserve focus when executing "CMake:Run Without Debugging". #1138 @estshorter
- Problems with CMake: Quick Start. #1004 @alan-wr
- Remove depends on optimist by upgrade handlebars. PR #1447 @lygstate
- Ignore the vcvars dev-bat call result. PR #1403 @lygstate
- Fix vs2010 which doesn't recognize host=x64. PR #1481 @lygstate
- Don't rebuild when doing command substitution. #1487
- Duplicate compiler flags should not be removed. PR #1497
- Hide "Unknown Language" for CUDA source files. PR #1502 @Synxis
- Ensure immediate effect of settings for communication mode and all generator related. PR #1500
- Fix shell script and vcvars devbat when TEMP folder has a space in the middle. #1492
Improvements:
- Added new variable substitution command:
${command:cmake.launchTargetFilename}
. #632 @ebai101 - Add output parser for Wind River Diab compiler. PR #1267 @ce3a
- Set application run directory to executable path. #1395 @Shatur95
Bug Fixes:
- Allow minor version of File API protocol to be greater than expected. #1341 @KyleFromKitware
- Fix high-hitting crash related to output stream encoding. PR #1367
- Fix high-hitting crash: "message must be set" introduced by VS Code 1.49.0. #1432
- Fix detection of clang 10 on Debian. #1330
- Detect gdb for msys2 MinGW properly. PR #1338 @lygstate
Bug Fixes:
- VS environment not set correctly. #1243
- VS kits don't set host/target arch properly for toolsets. #1256
- Disable launchTarget key binding while debugging. #1170
- System headers not found. #1257
- Add setting to enable/disable automatic reconfiguring of projects. #1259
- Partial/full CMT activation improperly persisted for multi-root projects. #1269
- Fix MacOS debugging to work out of the box. #1284
- Ensure the silent kits scanning is run once for multi-root. #1302
Improvements:
- Documentation updates. PR #1130 @zalava
- Add support for per-folder browse path. #1073
- Use a shell script to set environment variables for a kit. #809 @pisker
- Improvements of the status bar UI. PR #1200 @SchweizS
- Add context menu for CMakeLists. #741 @SchweizS
- Support partial CMake Tools activation for non cmake repos. #1167
- Support ARM IntelliSense modes. #1155
- Support GNU language standards. #1208
- Add indication of active workspace to project outline. #1183 @SchweizS
Bug Fixes:
- Skip over debugger guessing logic if cmake.debugConfig explicitly sets miDebuggerPath. #1060
- Normalize all paths sent to CppTools. #1099
- Add support for Objective-C and Objective-C++. #1108 @marksisson
- Update the configuration provider id. #1045 @ChristianS99
- Clear the terminal for Compile Active File. #1122
- Update vswhere to a version that supports utf-8. #1104
- Support source files outside the base path. #1140
- Allow quotes in cache entries. #1124 @tmaslach
- Fix default preferred generators detection logic. #1084
- Fix host and target platform information for VS kits. #964
- Fix error caused by duplicate project structure. #587 @SchweizS
- Disable launchTarget key binding while debugging. #1170
- Skip configuring when cache is present and according setting is on. #984
- Remove deprecated cmake.useCMakeServer setting. #1059
- Trigger automatic CMake configure on CMakeLists.txt save. #1187 @Yuri6037
- Silently scanning for kits:
- Various unhandled exceptions and crash fixes:
Improvements:
Bug Fixes:
- Toolset and platform are swapped when reading from CMake cache. #1065
- Unable to debug targets when path is specified as absolute by the cmake-file-api. #1067 @KoeMai
Improvements:
- Multi-root support. You can now open multiple folders in VS Code and CMake Tools will allow you to configure each of the projects in those folders.
- Add support for
${command:cmake.buildKit}
. #334 @xgdgsc - Add LLVM_ROOT and Visual Studio Clang locations to the search path for Kits. #914 @Zingam
- Support additional
intelliSenseModes
in the configuration provider. #960 - Detect bundled CMake in Visual Studio. #610 @Zingam
- Add "Scan for kits" option in kits QuickPick. #864 @Zingam
- Implement the CMake File API. PR #720 @KoeMai
Bug Fixes:
- Support temp folders not located on system drive. PR #974 @Carsten87
- Add MinGW path to the environment. PR #983
- Don't do a clean build for utility targets. #643 @rcxdude
- Visual Studio builds should support
cmake.parallelJobs
setting. PR #975 @tonka3000 - Fix build cancellation. #946 #781 #522 @KoeMai
- Normalize both absolute and relative paths. PR #963 @GeorchW
- Filter out duplicate targets from the target selector. #863
- Fix a crash when
chcp
is not found on the machine. #977 - Don't fail if CMakeLists.txt was appended to sourceDirectory. #1014
- Mark all tests as 'not run' in case of build failure when running CTest. PR #980 @Morozov-5F
- Add command to hide launch/debug commands and debug button. PR #1035
- Add support for
${workspaceFolderBasename}
. #869 - Fix exception thrown by debug/launch commands. #1036
Bug fixes:
- CTest status bar button text appears malformed. #911
- Cleanup fix for message "Platform undefined / toolset {}". #913
- Fix incorrect file associations when language is unset. #926
Bug fixes:
- Fix broken SchemaProvider. #874
- Fix the RegExp for finding a debugger. #884
- Update flow for missing CMakeLists.txt. #533
- getVSInstallForKit should be a no-op on systems other than windows. #886
- Include missing source directories in the custom browse path. #882
- Handle exceptions thrown by spawn. #895
- Various generators fixes:
Thank you to the following CMake Tools contributors: koemai, bjosa, emanspeaks, som1lse, dcourtois, tsing80, andy-held, notskm, thezogoth, yokuyuki, dbird137, fabianogk, randshot.
vector-of-bool has moved on to other things and Microsoft is now maintaining this extension. Thank you vector-of-bool for all of your hard work getting this extension to where it is today!
Breaking changes:
- The publisher id changes to ms-vscode.cmake-tools. This requires that you uninstall earlier versions of the extension.
- Scanning for kits is able to detect more accurately multiple VS installations. To achieve this, a Visual Studio kit is defined differently now in cmake-tools-kits.json: the "visualStudio" field represents an ID unique to the installation as opposed to "VisualStudio.${VS Version}" (which may be the same for multiple same year VS installations). The CMake Tools Extension is still able to work with the old definition VS kits, but for simplicity and to avoid duplicates in the json file it will prompt for permission to delete them each time a "Scan for kits" is performed.
Features:
- Support for localized messages.
- Cross compile support for CppTools integration.
- Adapt CppTools integration to API version 3. #637
- Expand kit environment variables. #460
- Add new commands: launchTargetDirectory, buildType, buildDirectory. #334, #654, #564, #559, #695
- Add support for VS2010.
Improvements:
- Restructuring of the CMake Driver.
- Improve stability of CMake Generator Selection. #512
- Refactor and extend CMS-server driver test.
- Rework the CMake Build from a terminal to a task.
- Add Launch target test.
- Increase wait time in test to open terminal.
Bug fixes:
- Cannot execute current target without a debugger. #601
- Path clobbering by bad kit file env. #701, #713
- Target install missing. #504
- CTest controller updated on reconfig. #212
- Recalculate total for every run of CTest.
- Debug target does not find GDB. #375
Many thanks to Yonggang Luo for several changes in this version.
Removal:
- The visual CMake cache editor GUI is gone. The API with which it was drawn is being removed from a future version of VS Code, and the feature had many issues. A future CMake GUI will be introduced with more features and greater stability.
Features and Tweaks:
- On Linux, will detect old CMake versions and offer to do an automatic upgrade. Windows support is pending. If you have a macOS devices and would like to contribute, please open a pull request!
- Smarter parsing of GCC and Clang compile errors to fold
note:
andrequired from:
blocks into their main diagnostic. This permits the folding and browsing of template and macro instantiation errors in a nicer fashion. MSVC error parsing pending. (NOTE: There is an upstream issue with the sort order of diagnostic information, sorequired from
tracebacks may appear out-of-order).
Fixes:
- On Windows, "Launch target in terminal" will use
cmd.exe
unconditionally. This works around issues with command quoting in PowerShell - "Debug target" will prefer
lldb-mi
tolldb
. Fixes issues wherecpptools
is unable to launch the debugger. - Document the
environmentVariables
field on kits. - Fix legacy CMake mode not setting the CMake generator.
- Permit limited variable expansion for
cmake.cmakePath
insettings.json
(refer to documentation for more details).
A bugfix release for these issues.
A bugfix release for these issues.
BREAKING CHANGE: Variant substitutions follow a new ${variant:var-key}
syntax to match the special namespacing of substitutions.
1.1.0 includes a few new major features:
cpptools
integration for IntelliSense- A Project Outline view as a custom explorer
- Building individual source files from the editor menus
- New UI for progress and cancellation
See the changelog in the official documentation for more information.