Changelog and History¶
1.1.3¶
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. (#579)
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. (#562)“Debug target” will prefer
lldb-mi
tolldb
. Fixes issues wherecpptools
is unable to launch the debugger. (#584)Document the
environmentVariables
field on kits. (#586)Fix legacy CMake mode not setting the CMake generator. (#567)
Permit limited variable expansion for
cmake.cmakePath
insettings.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 is encoded 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 parsed correctly.
Display a more helpful message when using a toolchain file and we fail to find the 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 after adding them to a target.
“Unexpected stderr/stdout…” no longer appears. This output is now logged as regular CMake status messages.
BREAKING CHANGE: Variant substitutions follow a new ${variant:var-key} syntax to match the special namespacing of substitutions. See Variant Substitution.
1.1.0¶
1.1.0 is the most exciting release yet! It includes several long-awaited features, including but not limited to:
A project outline view. CMake Tools will now render a tree representation of your 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 VSCode progress APIs. A proper Cancel button is visible on the progress notification for cancelling the build.
Progress for the Configure/Generate phase. It is up to CMake to generate reliable progress values, though.
Automatically configure a project when it is opened. CMake Tools will ask you the first time, and this preference can be persisted.
Will automatically ask you for a debug target if you try to debug but haven’t yet 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 extensibility API that gives external sources the opportunity to provide project configuration information on a file-by-file basis.
CMake Tools 1.1.0+ will utilize this API to provide per-file compilation and configuration information to support the C++ extension. This means that a properly set up CMake project need not manually set configuration information to receive the benefits of cpptools’ IntelliSense engine.
Check the updated How-Do-I page.
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 compiler and ask what to do with that kit (remove or keep).
New option cmake.copyCompileCommands: Set a path to which
compile_commands.json
will 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
$PATH
and 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). See cmake.buildBeforeRun.LLVM for Windows is now supported as an auto-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
. See cmake.cacheInit.Kits are now optional. If no kit is active, CMake Tools will ask you if you want to scan, select a kit, or opt-out of kits. If no kit is chosen, CMake Tools will let CMake decide what to do.
GCC cross-compilers are now detected as regular compilers for compiler kits.
Setting cmake.defaultVariants is respected again.
Setting cmake.mingwSearchDirs is respected again.
CMake Tools will attempt to set the path to the debugger (
gdb
orlldb
) 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 you expected a feature in 1.0.0 that isn’t listed above, it will be available in 1.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 more reliable dirty-checks when running a build/configure. (#385)
Fix handling spaces in filepaths when running
vswhere.exe
. (#381)Fix environment variables from
settings.json
being ignored when using legacy (non-cmake-server) mode. (#384)Do not case-normalize diagnostics on Windows. This prevents VSCode from considering two equivalent paths to be different when opening them from the problems panel. (#395)
Reset progress when build finishes. Stops a flash of “%100” when starting a new 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 new functionality, but new infrastructure and maintainers behind the extension.
It began with an overly-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 a project.
Opt-in automatic error reporting.
Lots of stability and backend cleanup.
All new documentation!