Changelog and History¶
1.1.3¶
Removal:
The visual CMake cache editor GUI is gone. The API with which it was drawn isbeing removed from a future version of VS Code, and the feature had manyissues. A future CMake GUI will be introduced with more features and greaterstability.(#579)
Features and Tweaks:
On Linux, will detect old CMake versions and offer to do an automaticupgrade. Windows support is pending. If you have a macOS devices and wouldlike to contribute, please open a pull request!
Smarter parsing of GCC and Clang compile errors to fold
note:andrequiredfrom:blocks into their main diagnostic. This permits thefolding and browsing of template and macro instantiation errors in a nicerfashion. MSVC error parsing pending. (NOTE: There is an upstream issuewith the sort order of diagnostic information, sorequiredfrom:tracebacks may appear out-of-order).
Fixes:
On Windows, “Launch target in terminal” will use
cmd.exeunconditionally.This works around issues with command quoting in PowerShell.(#562)“Debug target” will prefer
lldb-mitolldb. Fixes issues wherecpptoolsis unable to launch the debugger.(#584)Document the
environmentVariablesfield on kits.(#586)Fix legacy CMake mode not setting the CMake generator.(#567)
Permit limited variable expansion for
cmake.cmakePathinsettings.json(refer to documentation for more details).(#569)
1.1.2¶
Fixes and tweaks upon 1.1.2:
Fix silent failure when a build directory appears at a different path than isencoded in its
CMakeCache.txt.Improved logic in path normalization, but could be better.
Improve documentation on using
launch.json.Fix shell splitting preventing certain command lines from being parsedcorrectly.
Display a more helpful message when using a toolchain file and we fail to findthe C and/or C++ compiler because it is not stored in the CMake cache.
1.1.1¶
Fixes and tweaks upon 1.1.0:
Fix “Unable to automatically determine compiler” when using VS generators.
Fix failure to provide IntelliSense information for header files even afteradding them to a target.
“Unexpected stderr/stdout…” no longer appears. This output is now logged asregular CMake status messages.
BREAKING CHANGE: Variant substitutions follow a new${variant:var-key}syntax to match the special namespacing of substitutions. SeeVariant Substitution.
1.1.0¶
1.1.0 is the most exciting release yet! It includes several long-awaitedfeatures, including but not limited to:
A project outline view. CMake Tools will now render a tree representation ofyour CMake project, including all targets and source files.
Individual targets can be built/run using the context menu in the outline.
Individual source files can be compiled using the outline context menu.
The debugger can be started by right-clicking on the desired executable.
Update progress and cancellation notifications. Now uses the official VSCodeprogress APIs. A properCancel button is visible on the progressnotification for cancelling the build.
Progress for theConfigure/Generate phase. It is up to CMake to generatereliable progress values, though.
Automatically configure a project when it is opened. CMake Tools will ask youthe first time, and this preference can be persisted.
Will automatically ask you for a debug target if you try to debug but haven’tyet set one.
cpptools Integration!¶
The highest-demand feature of all has finally landed!
Recent versions of Microsoft’s C and C++ extension now export an extensibilityAPI that gives external sources the opportunity to provide project configurationinformation on a file-by-file basis.
CMake Tools 1.1.0+ will utilize this API to provide per-file compilation andconfiguration information to support the C++ extension. This means that aproperly set up CMake project need not manually set configuration informationto receive the benefits of cpptools’ IntelliSense engine.
1.0.1¶
Resolves a few issues/enhancements that didn’t make it into 1.0.0.
Automatically detect when a kit specifies a path to a non-existent compilerand ask what to do with that kit (remove or keep).
New optioncmake.copyCompileCommands: Set a path to which
compile_commands.jsonwill be copied after a configure run.Fix failing when CMake executable has a different name than
cmake.Fixed edits to the kits file not applying immediately.
Fixed issue where CTest is not on the
$PATHand it fails to detect tests.
1.0.0¶
CMake Tools 1.0.0 is a minor change over 0.11.x, but marks the first “stable”release. It is now a developer-ready tool that is suitable for everyday work!1
1.0.0 contains the following improvements and fixes over 0.11.x:
Option to build on
cmake.launchTargetPath(Launch-before-debug).Seecmake.buildBeforeRun.LLVM for Windows is now supported as anauto-detected Kit type.
To support LLVM for Windows, kit options can now be freely mixed-and-matched,eg. setting a toolchain file along with a Visual Studio environment.
Cache initialization files are now supported in
settings.json. Seecmake.cacheInit.Kits are nowoptional. If no kit is active, CMake Tools will ask you ifyou want to scan, select a kit, or opt-out of kits. If no kit is chosen, CMakeTools will let CMake decide what to do.
GCC cross-compilers are now detected as regular compilers for compiler kits.
Settingcmake.defaultVariants is respected again.
Settingcmake.mingwSearchDirs is respected again.
CMake Tools will attempt to set the path to the debugger (
gdborlldb)during Quick Debugging.Fix for intermittent “Not yet configured” errors.
A few issues slated for 1.0.0 fell through as the schedule slipped. If youexpected a feature in 1.0.0 that isn’t listed above, it will be available in1.0.1.
- 1
If you don’t agree, please open a bug report!
0.11.1¶
Several bugfixes and tweaks:
Attempted fix for “No build system was generated yet” by implementing morereliable dirty-checks when running a build/configure.(#385)
Fix handling spaces in filepaths when running
vswhere.exe.(#381)Fix environment variables from
settings.jsonbeing ignored when usinglegacy (non-cmake-server) mode.(#384)Do not case-normalize diagnostics on Windows. This prevents VSCode fromconsidering two equivalent paths to be different when opening them from theproblems panel.(#395)
Reset progress when build finishes. Stops a flash of “%100” when starting anew build.(#394)
Better error message when trying to use debugging on non-cmake-server.(#388)
0.11.0¶
0.11.0 is the biggest change so far to CMake Tools. It brings not just newfunctionality, but new infrastructure and maintainers behind the extension.
It began with anoverly-ceremonious blog post,followed by months of beta (when it should have been a few weeks).
Here’s a quick summary:
“Kits” provide a new way to encapsulate the toolset used to build aproject.
Opt-in automatic error reporting.
Lots of stability and backend cleanup.
All new documentation!