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 foldnote: 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 usecmd.exe unconditionally.This works around issues with command quoting in PowerShell.(#562)

  • “Debug target” will preferlldb-mi tolldb. Fixes issues wherecpptools is unable to launch the debugger.(#584)

  • Document theenvironmentVariables field on kits.(#586)

  • Fix legacy CMake mode not setting the CMake generator.(#567)

  • Permit limited variable expansion forcmake.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 isencoded in itsCMakeCache.txt.

  • Improved logic in path normalization, but could be better.

  • Improve documentation on usinglaunch.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.

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 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.

See the 1.1.1 milestone on GitHub.

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.

Checkthe 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 compilerand ask what to do with that kit (remove or keep).

  • New optioncmake.copyCompileCommands: Set a path to whichcompile_commands.json will be copied after a configure run.

  • Fix failing when CMake executable has a different name thancmake.

  • 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 oncmake.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 insettings.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 (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 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 runningvswhere.exe.(#381)

  • Fix environment variables fromsettings.json being 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:

0.10.x and Older

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