What's New in CLion

With the 2017.1 update CLion has learned a lot about C++14 and C++17. It improves your debugging experience with a disassembly view and unit testing with support for the Catch framework. In addition, Windows users are welcome to check out the new experimental support for Microsoft Visual C++ compiler.

2017.1 Mar 29

Modern C++

C++14 support
C++14 support
C++14 support
C++14 support


CLion 2017.1 delivers support for the following C++14 features:

  • auto return type,
  • generic lambdas,
  • variable templates, and
  • generalized lambda captures.

See the full list of supported features per standard in CLion’s online documentation.

C++17 support


As the C++17 standard is just around the corner and the upcoming features are being finalized, CLion starts supporting C++17 with nested namespaces.

Make auto intention

Make auto intention

For the sake of code readability and accuracy, CLion now suggests to modernize your C++ code by converting variable type to auto.

As this feature should be used carefully across your code base, it’s implemented as a non-intrusive intention. Use it as you see fit.

Code analysis

General improvements

We continue to improve CLion’s parser and code analysis to make it even more accurate:

  • Hidden functions from the base class are no longer suggested in completion
  • Fixes for various false positives, for example in case of decltype(auto) in trailing return
  • Correct calculation for value category (that fixes many false 'expression is not assignable,' 'expression must be lvalue,' and 'expression must be rvalue' warnings)

Precompiled headers

Precompiled headers

CLion now locates the precompiled headers and headers included via -include option, in order to correctly resolve symbols from such files and correctly highlight the code, navigate through it, perform code refactorings, etc.

Learn more

Disassembly view for debugger

Disassembly view

While debugging with GDB, you can now step into disassembly code when the sources are not available. Read the assembly, which is properly highlighted in the editor, and step through it to investigate the problem.



Catch is a cross-platform unit testing framework for C++ known for its easy starting process and convenient and flexible test cases. Now you can use Catch with CLion and benefit from completion and the built-in test runner.

Microsoft Visual C++ compiler

Experimental support for the Microsoft Visual C++ compiler is here. Check it out to avoid difficulties with MinGW/MinGW-w64 or Cygwin configuration, and especially if you use Microsoft Visual C++ as a compiler for your cross-platform C++ project.


Current support covers:

  • Auto-detection and support for C++ compiler from Visual Studio 2013, 2015 and 2017
  • Support for projects using CMake with NMake generator
  • Settings to configure architecture, platform, etc.
  • Navigation through the compiler errors in the Messages tool window

To switch on the support, use clion.enable.msvc option in the Registry.

Project model improvements

Project model is now more user-friendly:

  • For existing CMake projects, the project name in CLion is taken from CMake’s PROJECT_NAME on first opening
  • Escaped symbols in CMake files are now handled correctly
  • Obsolete not-modified run configurations, and run configurations for deleted targets, are now removed automatically

Find in Path

Run a text search across the whole project or any selected scope with Find in Path, now in a compact and more convenient popup window with immediate preview.

Find in path


Make auto intention

Log Viewer

Refine your search through the Git and Mercurial logs in the Log Viewer with these new options:

  • Ability to use regular expressions
  • Ability to match / ignore case

Configure which information to display in the log viewer to make it more compact or more detailed (for example, show / hide tag names).


Branches popup

The Branches popup has been redesigned and can now mark important branches as Favorites.

This gives you the ability to filter the branches and show only favorites in the corresponding popup.



Several important enhancements were added to the Swift plugin for CLion:

  • Create new Swift projects with ease using the new project template
  • Check possible issues in your code in Swift with SourceKit inspections and intentions available in the plugin
  • When using a type which doesn't exist yet, create it from usage via Alt+Enter

Other improvements

  • Zero latency typing has proved to remove many typing lags in IntelliJ-based IDEs and is now enabled by default
  • CMake 3.7 was bundled into CLion
  • Fixes for Dvorak layout in macOS, as well as Korean, Chinese and Japanese keyboard layouts on macOS are included
  • Settings Repository plugin is finally bundled into CLion
  • Go plugin was updated and now correlates with Gogland functionality
2016.3 Nov 22

C++ support

User-defined literals

This C++11 feature brings the concept of built-in type into the language and is now supported by CLion, including correct parsing, type preview in Quick Documentation popup Ctrl+Q and Rename refactoring Shift+F6.

Read more

C++14 digit separator

CLion can now correctly parse numbers that use single-quote character as a digit separator.

Overload resolution improvements

The process of selecting the most appropriate overloaded function or operator can be tricky. As far as the IDE is concerned, selection of the correct candidate affects code navigation, parameter info view and code analysis. CLion 2016.3 handles this well and even introduces two new code inspections for such situations:

  • Ambiguous call
  • No matching function to call

Read more

Code analysis improvements

Static analysis (including DFA) in CLion helps you write beautiful and correct code. In 2016.3 we’ve reworked dozens of checks to avoid false-positives. This work includes:

  • Correct tracking of variable usages in sizeof(), cin and cases when variable is passed by reference
  • Correct handling of non-trivial destructors in the Unused variable inspection
  • Support for __builtin_unreachable and __attribute__(unused)
  • Platform-dependent code analysis
  • And more

C support

CLion 2016.3 adds support for _Generic keyword, as well as code completion for specific C11 keywords such as _Thread_local, _Alignas, _Noreturn, _Static_assert, and _Atomic.

This version also brings support for gcc atomic builtins.

CMake workflow

Select generation directory

Users can now control the CMake generation directory inside CLion – not only the build directory where the final artifacts are stored. The corresponding setting is available in Build, Execution, Deployment | CMake settings and allows in-source builds, among others.

Select configuration

To save memory and time, CLion now doesn't build all four CMake configurations by default, but allows you to create additional CMake configurations (as many as you need). Create any number of CMake configurations from scratch, or copy existing ones, with all the settings pre-filled.

Open project from existing directory

Once CMake generation is done for your project, you can now open it in CLion, saving time on project opening. CLion will reuse the generation directory content and CMakeCache.txt file.

Note: Currently this works only for Makefiles generator.

CMake output console

CMake tool window

Updated CMake tool window (View | Tool Windows | CMake) now includes CMake output logs, that can be used to track the progress and debug CMake scripts. CMake output console supports error highlighting, links to corresponding CMake files, and navigation to next/prev errors.

CMake Cache

CMakeCache file can be now updated directly in CLion’s editor. This makes it possible to introduce any change to it, including new CMake Cache variables.

Project templates

Templates for C and C++ projects

If you plan to start a project from scratch, use project templates to generate the sample project and pre-fill root CMakeLists.txt with the necessary information (like for example, language standard or library type for a library project).


Remote debug on Windows

Remote GDB debug comes to Windows. Use your Windows machine to debug applications running on another Windows or Linux host.

Read more

Code highlighting

Semantic highlighting

Unlike the usual highlighting that picks out language keywords, types and values, semantic highlighting helps understand how data flow through the code by highlighting each variable/parameter with its own color. Switch it on in CLion in Editor | Color & Fonts | Language Defaults settings and give it a try!

Highlighting and configurations

When code depends on a set of variables and flags set in the run/build configuration, you can see the difference in the editor immediately as you switch the configuration in CLion. Resolve context is updated automatically, while manual switcher is still available as before.

Unreal Engine support

This version brings performance improvements for reopening an UE4 project that was previously indexed in CLion, along with a couple of fixes for parsing UE4 code. The above enhancements along with several plugins make the overall UE4 experience in CLion much more pleasant and convenient.

Check our tips for coding games with UE4 in CLion


tparam tag support

Doxygen support in CLion includes documentation comment generation for functions, classes and structures. Template parameters are now handled correctly, and a \tparam (@tparam) tag is generated for them.

Also, renaming a template parameter will update the documentation accordingly.


Undo actions

Sometimes when working with version control, you change your mind at the last moment. CLion helps you undo certain actions to avoid any harm:

  • undo the last change that you haven’t pushed yet;
  • restore a deleted local branch.

Sign-off commit

Linux kernel patches and some other projects require Git –signoff commits to be used. CLion now makes this possible to do from the commit changes dialog.

Resolve conflicts in one click

Simple conflicts can now be resolved by the IDE. If you have several nonoverlapping changes on one line, CLion will show a special resolve icon in the merge dialog. Click the icon to have the conflict resolved by the IDE.

Git remotes

Manage remotes through the VCS | Git menu. Now you can add, edit and remove remotes for every repo in the project.

Filters in Git/Mercurial log

CLion now builds an index for all commits on first-time project opening and later update it on a log refresh. This improves the performance of text, author and path filters in the Git log.

Git/Mercurial log UI changes

A new design for branches and tags in Git/Hg Log makes it cleaner and easier to use:

  • labels have moved to the right;
  • commit messages in the table are now aligned;
  • commit details have moved to the right.

UI enhancements

Find in Path

The Find in Path dialog now keeps previously used settings (scope, file name filter, context, etc.), regardless of where you call it from.

San Francisco font

On macOS, the default font in the Default and Darcula themes is now San Francisco (SF NS Text). It’s used across all the menus and tool windows.

Fira Code font

CLion 2016.3 bundles the FiraCode font, so font ligatures are now much easier to use. To set is as your editor font, select it in settings Editor | Colors & Fonts | Font.

macOS support

CLion 2016.3 includes a fix for extremely sensitive scrolling with a trackpad on macOS Sierra.

Also, the native file chooser on macOS is back.

2016.2 Jul 20

Doxygen support

Doxygen Viewer

Doxygen-styled docs viewer

If a project includes Doxygen-styled documentation, you can easily preview it in the Quick Documentation pop-up Ctrl+Q. It includes Doxygen-styled information (parsed and formatted) along with the type information.

Doxygen Rename

Safe Rename

Rename Shift+F6 a function or its parameters and be sure CLion will update the corresponding information in the Doxygen comments for you.

Doxygen Completion


When writing Doxygen comments, benefit from auto-completion for Doxygen commands and function parameter names.

Doxygen Comments Generation

Doxygen comments generation

Stubs for Doxygen comments can be generated automatically with CLion. If your function has parameters, returns a value or throws an exception, type “/**”, “/*!”, “///” or “//!” and then press Enter to generate a Doxygen stub for the function.

Read more about Doxygen support

Code generation

Generate operators

CLion is ready to help you with boilerplate code. With version 2016.2 generate equality, relational and stream output operators in one click. Select std::tie, 'generate as class members' and other options as necessary.

Read more

Generate definitions

A new setting called Generate in-place makes the Generate Definitions dialog more flexible. The defaults for this setting depend on your code, and heuristics are implemented to support the most common cases (like header-only or cpp-only classes).

Read more

Complete Statement

Complete Statement

With the updated Complete Statement Shift+Ctrl+Enter in CLion, parentheses, braces, semicolons, quotes, etc. are inserted as necessary and the caret is moved automatically so you can start typing the next statement.

Read more about Complete Statement


Debugger Improvements

Performance improvements

Along with plenty of correctness and ‘command timeout’ fixes in the debugger drivers (both GDB and LLDB), this version brings changes that affect debugging startup/shutdown, stepping with various data views, and expanding big data structures. For many of them performance has been improved greatly.

Read more about the changes

LLDB on Linux

LLDB on Linux

LLDB is now available not only on macOS, but on Linux as well. Select between the bundled GDB or LLDB, or a custom GDB version.

Attach to local process is now possible on Linux with either LLDB or GDB.

Remote GDB debug

CLion 2016.2 supports remote debugging with GDB/gdbserver. Start the program under gdbserver on target machine, and then connect to it from CLion running on another one (macOS or Linux). Inspect the code using breakpoints, expression evaluation, watches and other benefits of the IDE’s built-in debugger UI.

Read more about remote debug

Watches and Variables

The Watches view has been merged with the Variables view so you no longer need to switch between them. But if you feel more comfortable with the previous layout, feel free to switch this mode off and keep things as they are.

CMake support

Coding assistance

Writing CMake files gets easier with code completion and navigation actions such as Go to declaration/definition for user symbols in CMake (like functions or macros). Also, you can now view Quick Definitions Shift+Ctrl+I for such symbols.

Rename for users symbols

In addition to coding assistance, CLion 2016.2 supports Rename refactoring Shift+F6 for user symbols in CMake. This results in safer renaming for such symbols as CLion updates all the usages automatically.

Safe delete

Get CMake commands updated automatically when you delete files from your project. CLion will either remove the file reference from the command arguments, or warn you about a possibly incorrect command after deletion.

Live templates for Boost

CLion 2016.2 adds an updated boost template, as well as a new boost_with_libs that helps link your target with Boost libraries.

CLion environment variable

In order to detect if CMake on your project was run from CLion, and if so, set special variables/paths or execute some additional scripts of your choice, CLion 2016.2 sets an environment variable (CLION_IDE) that you can check in your CMake files.

Auto-completion for environment variables helps you type them easier.

Code style

New code style settings

With plenty of formatting settings available in CLion, you’ve always been able to flexibly configure your preferred code style. CLion 2016.2 adds a few new settings to fine-tune wrapping for lines after function return type, lambda capture list, and in << and >> operators.

LLVM/LLDB code styles

Predefined code styles provide you with ready-to-use code styles, or can be used as a basis for your custom style. In the 2016.2 release, you get LLVM and LLDB styles.



To use fonts with ligatures (e.g. FiraCode, Hasklig, Monoid or PragmataPro) now go to Editor | Colors & Fonts | Font settings, choose a corresponding font, and select the ‘Enable font ligatures’ option.

Editor background

Customize the look of your editor in CLion 2016.2 by calling Set Background Image action from Find Action Shift+Ctrl+A. Select an image, configure its settings in the dialog, and enjoy your custom background as you code.

Tool windows

Alphabetical sorting in Structure View

Structure view Alt+7 lets you navigate across the structure of the current file. By default, its entities are grouped by type (namespaces, structures, classes, etc.) in the same order as the original file. CLion 2016.2 adds the option to sort them alphabetically, which makes more sense for long files.

Inspections tool window

The updated Inspection window gives you an immediate code preview and allows you to apply a quick-fix or suppress the inspection in-place.


Unversioned files

Now it's easier than ever to remember about important files not yet under version control when committing. CLion shows them clearly in the commit dialog.

Log viewer

Working with Log viewer becomes more enjoyable thanks to these changes for Git and Mercurial:

  • Tooltips are shown with target commit information for arrows.
  • The IDE now loads the contents of the Log viewer in the background on every change (commit, fetch, rebase, etc.), so it’s always ready when you open it.
  • Commit details are shown for several selected commits.

To help you work with patches more effectively, we’ve implemented a couple of useful features in CLion 2016.2:

  • You can now apply a patch directly from the clipboard or drag a file into the IDE.
  • The ‘Apply patch’ dialog provides you with a Show Diff action to check the changes over your local version (with the ability to introduce local changes).
  • The IDE helps you apply patches to files that were already moved or renamed.
Case-only renames

CLion adds support for case-only renames in Git for Windows and macOS. This means that if you only changed the case of some letter while renaming a file (or folder), such a change will be previewed and committed successfully from the IDE.

Other improvements

  1. Supported and bundled toolchains versions were updated:
    • bundled GDB version updated to 7.11;
    • bundled LLDB (on macOS and Linux) version updated to 3.8;
    • maximum supported version of MinGW-w64 is 5.* and Cygwin updated to 2.*;
    • bundled CMake version updated to 3.6.
  2. CLion for Windows now bundles a customized JDK with font-rendering and focus fixes from the JetBrains team.
  3. Swift plugin for CLion adds Swift 2.2 support, Introduce Variable refactoring and argument placeholders for Swift. Read more.