What's New in CLion

CLion 2018.3 takes a huge step towards Remote Development as it enables one of several major configurations for remote development. It has expanded its tooling support by integrating with CPU Profilers. The existing unit testing support has also been enhanced, with new IDE actions and faster code navigation and search which are now partially based on the Clangd-based language engine.

2018.3 (Nov 27)

Initial Remote Development support

You can now develop remotely from a Windows, Linux, or macOS client machine to a Linux remote host, for CMake-based projects only. The current setup assumes the source code is located on a local machine, which CLion synchronizes to the remote machine. Many other remote development setups are planned for future CLion releases.

Supported configurations

Supported configurations

To start developing remotely, first create a remote toolchain in Settings | Build, Execution, Deployment | Toolchains. Provide the remote host address and credentials, and then use the toolchain in one or several CMake Profiles. After CMake is reloaded, you’ll be ready to start working remotely with your project in CLion.

Learn what’s going on in CLion under the hood.

Remote mode

Remote mode

After the configuration is done, you can run or debug your application or unit tests remotely from CLion. Code is built, run and debugged on a remote host, while you work with the code in CLion on your local machine. Code is resolved locally, and CLion synchronizes the header search path to the local machine to speed up the process.

Supported configurations

Enable remote as default

To use CLion in remote mode for all your projects, both the new and existing ones, you can set your remote toolchain to be the default.

Go to Settings | Build, Execution, Deployment | Toolchains and simply move the toolchain to the top of the list. CLion will then use this toolchain automatically for any projects you open in CLion.

CPU Profiler

CPU Profiler

CLion now integrates with CPU Profiler on Linux (Perf) and macOS (DTrace). You can run the profiler right from the IDE and review the analysis results in a dedicated tool window (View | Tool Windows | CPU Profiler).

Use the flame chart, call tree and method lists to get a better overview of the possible performance issues in your code. Navigate to the source code to locate the issues in the code base.

Learn more

C++ Support

Clangd-based navigation and search

Clangd-based navigation and search

We’ve been using an experimental, complementary Clangd-based language engine to help you annotate errors in the editor. Now, it also powers several navigation and search actions, including Go to declaration (Ctrl+B)/definition (Ctrl+Alt+B), highlighting references under the caret, quick documentation (Ctrl+Q), and Find usages (Alt+F7). The results are still merged with the ones collected by CLion’s own engine.

C++17: fold expressions and deduction guides

C++17: fold expressions and deduction guides

Now, CLion correctly parses C++17 fold expressions and C++17 deduction guides. This means that there is less false code highlighting and better code assistance for you. For example, the correct type will be shown in the parameter info for user-defined deduction guides.

New IDE actions

New Build and Rebuild actions

New Build and Rebuild actions

The new Build menu comes with a set of new and updated build-related actions for CMake:

  • Build/Rebuild all target from all CMake Profiles
  • Build/Rebuild all target from the selected CMake Profile
  • Build/Rebuild the selected configuration
  • Recompile the current file
  • Install
  • Clean
Activity Monitor

Activity Monitor

This new experimental feature shows how much CPU the subsystems and plugins (both built-in and additionally installed ones) are consuming. To access it, go to Help | Activity Monitor.

If you see a subsystem whose %CPU is unusually high, feel free to ask our support team about it or report it to the issue tracker.

New Run Anything

New Run Anything

Run Anything (Double Ctrl) is a new and universal way to run and debug any configuration in your project, or even open a project.

To run a configuration, just start typing its name.

To debug, hold down the Shift key to switch to the Debug Anything mode.

To open a project, type “Open” and select the desired project from the list.

Updated Search Everywhere

Updated Search Everywhere

The updated Search Everywhere (Double Shift) now includes all the multiple actions in one:

  • Search Everywhere
  • Find Action
  • Go to Class
  • Go to File
  • Go to Symbol

Each has its own separate tab in the dialog, and you can use Tab to switch between them.

Unit testing

In v2018.3, we’ve reworked the integration with unit testing frameworks in CLion (Google Test, Boost.Test, and Catch (2)) in order to eliminate various performance issues and hangs. We’ve also improved output processing in many cases.

Learn the details.

Show Test List

Show Test List

To improve performance, CLion now uses lazy test detection. This reduces project indexing times in many situations. For diagnostic purposes, we’ve implemented a new action called Show Test List (available from the Find Action dialog), which provides a text file with a list of all the tests currently detected in the project.

Compilation database validation

Compilation database validation

CLion now provides specific inspections to check for compliance with the compilation database’s JSON schema.

For example, it can highlight situations when an incorrect type is used for the property value, or when the property is missing.


Formatted macro expansion in Quick Doc

Formatted macro expansion

CLion now formats the macro replacement in the Quick Documentation popup (Ctrl+Q). It also highlights strings and keywords used in the final substitution, so you can quickly understand the code that will be substituted after the preprocessor pass.

Multiline TODO comments

Multiline TODO comments

To add more information to TODO comments but keep them readable, you can now split the comment into several lines. Just add an indent starting from the second line of your multiline TODO comment and the IDE will differentiate it from an ordinary comment.


Git submodules

You can now work with Git submodules in CLion. When you clone the root repository, CLion will clone all its submodules. The same is true for updates, and other VCS actions work with submodules as well.

GitHub pull requests

A brand-new GitHub pull requests tool window (VCS | Git | View Pull Requests) lets you view all the pull requests to the repository. Search them by state, assignee, author, etc., and easily create a new local branch with a simple right click.

Accessibility improvements

To make our tools accessible to as many people as possible, we’ve added a few new options to the Appearance section in the IDE’s settings (Settings | Appearance & Behavior | Appearance). Here, you’ll find a new High-contrast theme, expanded support for screen readers (they can now read line numbers, VCS annotations, and gutter icons tooltips) and an option to adjust IDE colors for people with color deficiencies.

High-contrast Theme

High-contrast Theme

A High-contrast Theme is now available for CLion. You can either switch it on just for the editor (Ctrl+`) or for the whole IDE (Settings | Appearance & Behavior | Appearance | Theme).


New Plugins UI

New Plugins UI

Plugins settings under Settings | Plugins have been redesigned from the ground up. The new UI makes it much easier to control the plugins installed in your CLion instance and keep them up-to-date.

Featured plugins and marketplace

Featured plugins and marketplace

You can see a list of the most valuable plugins for CLion located in the Featured plugins list. Or, sort all the plugins by rating or number of downloads.
If you are a plugin writer, check out our new platform for third-party plugin vendors.

Other improvements

CLion 2018.3 comes with the Swift Package Manager support in the Swift plugin. Simply open the SPM project in CLion and work with it – no additional configuration required. Read more and watch a short demo

Rust plugin was updated to get partial Rust 2018 support, Move analysis inspection and cargo unit testing support.

2018.2 (Jul 25)

C++ support

Argument selection defects inspection

Clangd-based language engine

CLion 2018.2 introduces an experimental clangd-based language engine for showing code errors and warnings in the CLion editor, which works alongside CLion’s own language engine. It’s enabled by default on all platforms. Note that the clangd engine is used for code analysis only and doesn’t affect the rest of code insight features like completion or refactoring.

Learn more

Argument selection defects inspection

Is it possible to detect situations when the arguments of the same type are passed in the wrong order? It is if argument and parameter names are meaningful! Welcome a new inspection in CLion to alert you of this: argument selection defects.

Note, it works on top of the new clangd-based language engine, so you have to turn it on to enable the new inspection.

Learn more about the algorithm used

New Project Models

Gradle C++
Compilation Database

Gradle C++

New Gradle C++ projects can now be opened in CLion (see the new C++ plugins announcement). Use the build.gradle file or the directory containing this file to open a Gradle project in CLion. All IDE capabilities, including full code insight, are available for such projects in CLion.

Learn more

Compilation Database

Compilation Database is a set of all compile options used to build the files in a project. If you manage to get one from your project (via your build system's options or separate tools like bear and intercept-build), you can now use the resulting json file to open your project in CLion. Code insight does work, though it’s not yet possible to build, run, or debug such projects.

Learn more

CMake support

Included files as project files
CMake macros

Included files as project files

You no longer need to list header files from your project root directory directly in CMake to get full code insight for such files in CLion. If you include the header or source file into any project file, CLion will automatically treat it as a project file as well, which means full code insight will work in there!

Learn more

CMake macros

When configuring an external tool in CLion, you can now use CMake-specific macros, which provide information about the current CMake run configuration: build directory, build type name, program arguments, or target name.

Dynamic analysis

Google Sanitizers
Valgrind Memcheck

Google Sanitizers

If you build your project with the -fsanitize option, CLion will visualize the sanitizers’ output in a “Sanitizer” tab in the run tool window. Use it to review the list of errors, navigate to sources in the editor, and do much more. Enjoy support for ASAN, TSAN, MSAN, and UBSAN in CLion.

Learn more

Valgrind Memcheck export/import

To keep an eye on your project’s memory issues and track the progress, you can now export Valgrind Memcheck results into XML files. Reimport them back with ease, whenever you need.

Recompile a single file

Recompile a single file

To speed up your development cycles, verify local changes quickly by recompiling a single file. Use CLion’s new action Run | Recompile (Shift+Ctrl+F9).

For now this only works for CMake (it calls the CMake target for the corresponding file, instead of a direct compiler call) and compilation database projects (it calls the compilation command from the json file).

Learn more

Database tools and SQL

Database tools and SQL

Version 2018.2 bundles the Database Tools and SQL plugin, which adds DataGrip’s functionality to CLion. This allows you to work with many known databases like MySQL, PostgreSQL, Oracle, and others.

Explore the content of a database, read and modify data, execute queries, and get full code insight for SQL too.

Learn more

IDE performance

Making the editor more responsive is currently one of our top priorities. CLion 2018.2 comes with the following improvements:

  • Lexer-only indentation processor allows CLion to format your code based on lexer information. Read more
  • Version 2018.2 brings fixes for UI freezes in:
    • completion use cases,
    • Search Everywhere,
    • navigation to Related symbol,
    • breadcrumbs,
    • and more.

Other improvements

Among other enhancements you’ll find:

  • Bundled LLDB 6.0 and CMake 3.12.
  • A host of fixes for LLDB and GDB.
  • Support for WSL background processes (starting with Windows 10 v1803).
  • MacBook Touch Bar support (read more).
  • Improved VCS support (read more).
2018.1 (Mar 28)


WSL config

Linux toolchain on Windows

If your project requires a Linux toolchain while being developed on Windows, you can now use Windows Subsystem for Linux (WSL) in CLion running on Windows.

Configure WSL and the corresponding toolchain under Settings | Build, Execution, Deployment | Toolchains, and then you’re ready to use it in CLion. Header search paths on WSL will be used, and the Linux binary will be created for you to run and debug on WSL.

Learn more
WSL Valgrind

Valgrind Memcheck on WSL

Valgrind Memcheck can detect dozens of memory errors and leaks and is now available for Windows users on WSL.

Turn on a WSL toolchain, make sure Valgrind is detected in settings (Settings | Build, Execution, Deployment | Valgrind), and then compile and run regular and test targets under Valgrind Memcheck to detect possible errors and leaks. View the results in a special tab in the Run tool window.

C++ support

if with initializer

C++17: If and switch with initializers

To avoid polluting an ambient scope or creating an artificial scope for initializers in if and switch operators, C++17 suggests adding an initializer to if and switch conditions. CLion now parses and resolves such statements correctly.

structured bindings

C++17: Structured bindings

C++17 introduced structured binding – a convenient and compact way of binding a list of identifiers to a set of objects. CLion’s C++ language engine now supports this feature and ensues accurate code analysis for it.

Ternary operator

Ternary operator

The ternary operator is now handled correctly in CLion’s code analysis. This means many false warnings and errors are no longer thrown, such as:

  • Red code in the ternary + new operator
  • False positive if std::out is used in the ternary operator
  • Incorrect resolve when initializing a reference from a ternary operator
Rename siblings

Rename and Change Signature for hierarchies

Refactoring hierarchies can be tricky, especially if you introduce a change in a derived function. To make it reliable we made sure that the Rename and Change Signature refactorings update functions in all inheritance branches, including sibling functions.


Clang-Tidy settings

Clang-Tidy options and configs

Now you can provide options to some Clang-Tidy checks (e.g. modernize-use-nullptr) in CLion, under Settings | Editor | Inspections | C/C++ | General | Clang-Tidy.

If you prefer .clang-tidy config files instead of the IDE-provided settings (for example, because you store these config files in a VCS for the whole team to access and use in various IDEs), you can configure CLion to respect your existing per-directory configs.


Folding control statements

Code folding of the control statements

Now you can collapse/expand control statements (like if/else, do/while, for, or switch) with a code block that’s longer than one line, or with a code block inside braces. Just use Shift+Ctrl+Period / Ctrl+= You can also hover the mouse over the folded block to preview the content.

Message windows

Message toolwindow: new settings

With v2018.1, you can decide if build output is always necessary (and thus should be visible) or it’s only needed if some warnings or errors appear. Look in the Messages tool window settings for these options:

  • Always Show on Build (Default)
  • Auto-Hide and Show on Warning/Error
Learn more

Breadcrumbs for C and C++

Keep track of your location in C and C++ code with the breadcrumbs – small markers at the bottom of the editor that help you navigate around your code. Right now CLion shows namespaces, classes, structures, functions, and lambdas there.

Learn more
Unwrap blocks

Unwrap/remove code blocks

To accurately and safely remove enclosing parts in complicated code with lots of nested statements, use Unwrap/Remove… action (Ctrl+Shift+Delete). It suggests the options depending on where your caret is and is capable of unwrapping if, else, for, while, do..while and for control statements.


CMake Install

CMake Install

If you have any CMake install targets in your project, you can call Install from the CLion’s Run menu now. The cmake install command will be executed.

Alternatively, you can add an Install step to any of your run configurations in CLion.

non-CMake prj

Open single file and non-CMake projects

While CLion still requires a CMake project to provide smart IDE features, you can now open a single file or folder in CLion which don’t have to be connected to any CMake project.

Follow the built-in notification to select and load a CMakeLists.txt file later. Call Tools | CMake | Unload CMake at any time to unbind your project from the current CMakeLists.txt.

Learn more
Create CMakeLists.txt from template

CMakeLists.txt file template

Create new file (Alt+Insert) now provides an option to create a CMakeLists.txt file.

The content of the generated file is defined by the template in Settings | Editor | File and Code Templates, so you can customize it based on your project’s or team’s needs.

Project scopes

Configure scopes

Predefined and custom scopes

CLion 2018.1 brings several predefined scopes which can help overview your project from different angles, like Project Source Files, Project Non-Source Files, and Changed files.

You can also configure custom scopes, for example a scope that only includes project header files.

Learn more
Switch scopes in Project View

Project view

By default, Project View opens the Project, which includes all project files including the generated folder (like cmake-build-debug) and other excluded folders. Later, you can select between other predefined or custom scopes.

Find in Path with Scopes

Find in Path

To narrow down your search and thus make it quicker and more efficient, use scopes in the Find in Path dialog. All custom scopes created earlier are available in the list.

VCS: Partial Git commits

Select code chunks to commit

Select code chunks to commit

Want to commit only the selected changes from files and leave others for later? Partial Git commits (git add -p) can help here, and now there is support for them provided by CLion here!

To include code chunks in a commit, use the check-boxes in the Diff pane of the Commit Changes dialog.

Add to changelist

Move a change to the changelist

While editing a file, you can see change markers in the left gutter. These not only let you overview the change and roll it back, but also move it to any existing changelist or create a new one and add the current code chunk to it.

Learn more

More languages – more power

Objective-C / Objective-C++ support

Work with files in Objective-C / Objective-C++ added to your CMake project and benefit from the following features (courtesy of AppCode) bundled into CLion:

  • Language syntax support
  • Objective-C inspections (except for the clang analyzer set)
  • Key-value coding support
  • Live and file templates
  • Code style/color schemes

Fortran and Rust plugins

Fortran plugin comes with FORTRAN 77 / 90 / 95 / 2003 and 2008 support. The capabilities include smart editor, navigation actions, code analysis and debugger.

Rust plugin comes with:

  • the Cargo build system on board,
  • updates to CLion’s New Project wizard
  • and a debugger.
Learn more

Other improvements

There are dozens of other useful enhancements in CLion 2018.1. Find out more in our blog.

  • Performance improvements: Important changes were introduced to make the editor more responsive. Incremental highlighting was implemented.
  • MSVC by default: No need to turn on Microsoft Visual C++ compiler support in Registry – now it works by default.
  • Color scheme improvements: CLion now bundles Monokai and GitHub schemes, and comes with lots of fixes to the existing schemes.