Skip to main content
Jump to: navigation, search




This is the New & Noteworthy page for CDT 9.4 which will be part of Eclipse Oxygen.2


Open Declaration on decltype

Open Declaration on a decltype token now opens the declaration of the deduced expression type (bug 520913).

Code Analysis

A new quick fix was added for suppressing a problem by adding a suppression comment (bug 495842).

CDTQuickFixSuppress1.png CDTQuickFixSuppress2.png


Command line code formatter It is now possible to format source code without starting the Eclipse UI using the new headless formatter application. The command line formatter works as a standard Eclipse application.

The following command will format the source files in the folder src with the options specified in the org.eclipse.cdt.core.prefs file:

eclipse -nosplash -application org.eclipse.cdt.core.CodeFormatter -consoleLog \
        -verbose -config .settings/org.eclipse.cdt.core.prefs src/

See Using the Formatter Application and bug 520340 for details.



Headless Build Headless build has three new command line arguments:
  • -marker-type which specifies which marker types to consider when failing a build. Can be all (default) cdt (shortcut for C/C++ Problems) or any marker ID. Can be specified multiple times to check for multiple markers. Can be used to, for example, prevent C/C++ Scanner errors from causing build failures.
  • -printErrorMarkers prints all error markers (debugging option) at the end of a build. Can be used to diagnose why build has failed (specific error markers).
  • -help display help.

See (bug 520163).

Core Build System The CDT Core Build System continues to advance.

Support for Autotools projects has been added as an experimental feature.

Support for Makefile projects has been added. The old Include Paths and Symbols project preference page is added to these projects to allow manually adding this information to improve indexer performance.

A Toolchains preference page has been added. Its currently appears under the CMake preference page to avoid confusion with managed build preferences. It can be used for Makefile projects as well. This page allows users to control the preference order of toolchains for the auto creation of build configurations. It also allows users to manually add toolchains based on a toolchain type. Currently GCC and clang are supported.

Core Build Targets To support auto selection of target types without having to have a full target integration, the Generic Target type is added. It allows users to manually create targets and set the os and cpu architecture to direct toolchain selection. It also allows for executing any command at launch time using UI borrowed from the External Tools launches.

By extending Generic Targets, support is added for launching over serial. This is frequently used when working with microcontrollers and launch involves writing an image to flash over the serial port. Co-ordination is provided for the serial port to allow concurrent use with the Terminal View.

Container Build Support has been added to allow building a CDT project in a Docker Container.

With the CDT Docker Launcher feature installed, a user can opt to build a Managed project in a Docker Container. This includes Autotools projects, Managed Make projects, and Standard Make projects that aren't using the new CDT Core Build System. The feature adds an additional Container Settings tab to the the C/C++ Build Settings which allows enablement for the current Managed Build Configuration as well as specifying what Docker Connection to use and what Docker Image to build the Container from. By default, the project folder, any related project's folders, and the working directory are all automatically mounted from the host system into the Docker Container during build. If additional host directories are required, the new Container Settings tab allows specifying such folders (e.g. a local directory that contains configuration files that isn't part of the CDT project).


When the project is built, the build will occur in a Docker Container using the Docker Image specified. The Docker Image must be prepared with all tools needed for the particular project (e.g. gcc, make, autotools installed). If debugging is desired, gdbserver needs to be pre-installed on the Docker Image as well.

All files created or modified within the mounted directories are accessible once the build is over and the binary executable can later be run or debugged in a Docker Container using the "Run as C/C++ Container Executable" and/or "Debug as C/C++ Container Executable" actions from the context menu.

Header files calculated from the build are copied to the host and are used to index the project as if run in the Docker Container. These headers can be removed later if desired via Preferences.


External Console You can now debug a program with an external console window easily in CDT on Windows. This prevents GDB mixing its input/output with the program being debugged. CDT launches the new console by telling GDB with "set new-console on". This is a Windows only feature as only Windows has support for "set new-console on".

click for larger version

You can set whether to use an external console window in the launch configuration:

click for larger version

You can set the default value for any newly created launch configurations in the preferences:

click for larger version

See (bug 520580).

API modifications

  1. The method GDBJtagStartupTab#createRunOptionGroup(Composite) has been deprecated because the content of the run options group and the run commands group has been merged within the Startup page of the UI (see bug 525692). Extenders should override GDBJtagStartupTab#createRunGroup(Composite) instead.

Bugs Fixed in this Release

See Bugzilla report Bugs Fixed in CDT 9.4

Launch Bar

The CDT 9.4 release include the Launch Bar 2.2.0 minor release.

The main feature in this release is clean up of the New Launch Config wizard so that the launch mode and launch configuration types appear on the same page. This simplifies the UX by showing the user why selecting the Mode is important, i.e. it changes the list of available types that support that mode.

Additionally we've added a new way of specifying New Launch Target wizards so that the wizard can be also used to edit the target.

And finally, we've added a mechanism for adding Build Settings tabs to the Descriptor editor.

Back to the top