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: and required 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, so required 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 to lldb. Fixes issues where cpptools 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 in settings.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.

See the 1.1.2 milestone on GitHub.

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.

See the 1.1.1 milestone on GitHub.

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 or lldb) 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:

0.10.x and Older

The old (pre-0.11.0) changelog can be found in here.