News

CLion 2017.1 released: C++14, C++17, PCH, disassembly view, Catch, MSVC and more

Please give a warm welcome to CLion 2017.1!

CLion_20171_1000x500

Our first big update this year includes:

Download CLion 2017.1

Modern C++ standards

As C++17 has already been approved, we’ve sped up to support the latest C++ standards. The following features of C++14 are recognized in v2017.1:

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

Support for these language features includes correct highlighting and no false-positives in code analysis, as well as correct code completion, navigation and refactorings. For example, earlier you couldn’t get the code completion in the case below as CLion was not able to correctly infer the type of vec variable:
cpp14_auto_return
Now this works fine in CLion.

This means that only constexpr is actually missing from C++14. As for C++17, we’ve started with the most upvoted feature, nested namespaces.
cpp17_nested_namespaces

There are dozens of fixes for incorrect code resolve and thus no more false code analysis and other related issues. Check out the build to see if CLion got better for you!

Support for C++11 and C++14 will be polished in 2017.1.x and 2017.2 releases, and hopefully we’ll be able to devote more time to C++17.

Make auto

While working on modern C++ standards, developers see how new language features can help make their code more accurate and readable. What if an IDE could assist you with the task of modernizing your code? Sounds good, doesn’t it?

The first step we’ve taken in this direction is to add a ‘convert variable type to auto’ intention in CLion 2017.1. Just put the caret on the type or variable name, and invoke the available intentions list with Alt+Enter:
Make auto intention

Be careful – keep the code modern, but self-documented. The best general cases to convert variable type to auto are iterators, type casts and new-expressions.

Precompiled headers and more

Precompiled headers and the -include compiler option is a way to reduce compilation time and keep large-scale codebases structured and clear. When using this, you simply compile expensive includes once and then guide the compiler to reuse that information.

CLion 2017.1 correctly resolves symbols from such headers, suggests code completion, navigate to the declarations and definitions.
PCH

Check more details.

Debugger

The debugger in CLion 2017.1 received several important bug fixes and a workaround for the GDB timeout issue (which unfortunately still happens to some CLion users).

However, the most important and long-awaited change is the disassembly view in the debugger. When the sources are unavailable, you still can step into and view the disassembly code. Step through it to investigate the issue in your program deeper or to understand what’s happening inside a library call.
Disassembly view

For now this only works for GDB. For more about the limitations and known issues, see this.

Besides, if you just open a .s or .asm file in CLion (or other extensions, if you add them to Settings | Editor | File Types | Assembly Language) which uses the AT&T dialect and no preprocessor, it will be appropriately highlighted in the editor.

Catch

There are lots of unit test frameworks for C++: Google Test, Boost, CppUnit, CppTest and many more. Catch is one that’s known for its easy starting process (just include a simple header) and convenient and flexible test cases.

CLion has had Google Test support for a while, and now we’ve introduced Catch support. It includes a built-in test runner that allows you to view the test results and sort them by duration, rerun failed tests, export test results, navigate instantly to the source code, etc.

Catch

The special Catch Run/Debug configuration is flexible enough to run any preferred set of tests within CLion. For your convenience, it provides you with completion of Catch tags and wildcard-based matching templates to speed up configuration.

catch_completion

To learn more about Catch and how it’s supported in CLion, read this detailed blog post.

Microsoft Visual C++ compiler

One more feature that many of our users have requested is support for Microsoft Visual C++ compiler.

There are three important things you need to know if you’d like to try it in CLion:

  1. Use the Registry option clion.enable.msvc to enable this support (in Find Action dialog (Shift+Ctrl+A on Linux/Windows, ⇧⌘A on macOS) type Registry; open Registry, type clion.enable.msvc to search for the settings and turn it on).
  2. CLion supports Microsoft Visual C++ compiler that ships with Visual Studio 2013, 2015 and 2017.
  3. There’s no support for msbuild. CLion works through CMake with the NMake generator. Besides, debugger is not yet supported.

msvc_release1

CLion auto-detects the Visual Studio versions installed on your machine; provides settings to configure the Microsoft Visual C++ compiler path, architecture and platform; and finally runs Microsoft Visual C++ compiler to compile your program. It also helps with navigation through the compiler errors in the Messages Build tool window.

It’s important to understand that this support is currently experimental, meaning there are known issues, the biggest being that there’s no support yet for specific Microsoft C++ language extensions. We will continue to work on it within the 2017.2 EAP.

Find in Path

In CLion it’s possible to search for text across the whole project or any selected scope, with the Find in Path dialog (Shift+Ctrl+F on Linux/Windows, ⇧⌘F on macOS). Now it has a popup window with immediate preview, though you can still open a separate Find Window if you wish:
Catch

VCS: enhanced log view and branches popup

CLion 2017.1 enhances its Log View, making search easier with regular expressions and the ability to match/ignore case.
match case in log viwer

If you have lots of branches in your project and are afraid of getting lost in them, mark the most important ones as Favorites. The redesigned branches popup then allows you to filter them and view only the favorites.

Swift and other plugins

If you are looking for a Swift IDE on Linux, check the Swift plugin for CLion. Thanks to the AppCode team, it now comes with important enhancements that make development in Swift easier:

  • Create new project wizard provides ability to create Swift projects
  • SourceKit-based inspections and intentions are available in the plugin
  • Generate type and initializers from usage

Swift

Besides, Go plugin was updated and now correlates with Gogland functionality.

That’s it! Explore all the new features in more detail on our website and watch this overview video:
https://www.youtube.com/watch?v=DcKxSB2KAMk

To play with the new features, check our special repository that we maintain in order to illustrate changes in CLion 2017.1 in a very code-centric way.

Start your 30-day free evaluation and check all the new features and fixes.

Download CLion 2017.1

Your CLion Team

JetBrains
The Drive to Develop

image description

Discover more