Exciting news! CLion 2019.3, the last major update this year, has just been released!
Improving the IDE performance and fixing major bugs are always a top priority for our team. In this update we have been focusing especially on improving the performance in specific areas, eliminating UI freezes (not all, but many of them have been melted away!), and enhancing the editor and the integrations for our users!
To update to this version you can use the Toolbox App, snap package (on Ubuntu), our website, or the patch-update from the latest build of 2019.2.
Please welcome the Release Candidate for the upcoming CLion 2019.3!
To install CLion 2019.3 RC (build 193.5233.56), download it from the website, update from our Toolbox App, or use a snap package (for Ubuntu). Please note that to use CLion 2019.3 RC, you need to either have an active subscription or start a 30-day evaluation period. No patches are provided for this release candidate, but you can expect a patch from the latest 2019.2.5 update to the 2019.3 release version.
CLion 2019.3 goes Beta! To install CLion 2019.3 Beta (build 193.5233.10), download it from the website, update from our Toolbox App, get it through a snap package (if you are using Ubuntu), or use a patch update.
Completion insert handlers were implemented in Clangd-based language engine, which allows functions/methods to be completed with (), namespaces – with ::, and type aliases – with a space at the end, if they have a built-in underlying type:
Full Remote Mode in CLion requires rsync (for macOS/Linux clients) or tar (for Windows clients) installed on a remote machine. CLion now verifies the tool is installed and provides a warning on the corresponding remote toolchain settings page, which clearly states that “rsync/tar is not installed or not available in PATH on remote host”.
You can now set a custom GDB debugger in the Remote or WSL toolchain (CPP-17552).
Resync with Remote Hosts is now enabled on project reload by default. This allows CLion to synchronize the header search paths from the remote machine to the local host (to resolve the code correctly in CLion) on every project reload. This operation might be time-consuming, but as it runs in the background, it shouldn’t affect CLion’s performance. If you are still experiencing any performance issues, try disabling the clion.remote.resync.system.cache registry option (Help -> Find Action, type Registry).
CMake File API, which makes it possible to use various CMake generators like Ninja in CLion, is now supported not only for v3.15, but for any CMake version higher than 3.15.
Code coverage now works with a Ninja generator (CPP-17864).
This build also brings several fixes to code completion and a fix for the lengthy UI freeze (CPP-17961).
Concepts are one of the biggest features coming in C++20, and knowing that, we’ve been thinking about supporting Concepts in CLion for quite a while. Enter Saar Raz with his C++20’s Concepts implementation in Clang! Long story short, we have been collaborating with Saar to merge his branch into our custom Clangd-based language engine in CLion, and started implementing some nice IDE features on top. Sounds ambitious enough, but we have thoroughly enjoyed the experience so far! A very early result of this collaboration was used by Saar in his CppCon 2019 talk on Concepts:
We do recommend watching this talk in full to learn how Concepts can be useful, and whether you should care about them even if you’re not using metaprogramming in your daily work.
Now, we are ready to present the C++20’s Concepts support in CLion, available to all the 2019.3 Early Access Program users! Just grab a build and give it a try.
A new CLion 2019.3 EAP (build 193.5096.27) is now available! Get it from our website, via the Toolbox App, or as a snap package (if you are using Ubuntu). A patch-update for anyone using the previous EAP build will be available shortly.
Since our last edition in February came out, the C++ community has organized lots of fantastic conferences, held productive C++ Committee discussions, and published tons of educational posts. We, in the meantime, have been rethinking the format of the C++ Annotated series.
At JetBrains, we do several other monthly digests with briefly annotated links to the latest articles and posts around the respective technologies: .NET Annotated, Java Annotated, and PHP Annotated. In C++, so far we’ve followed a slightly different approach, diving deeper into some particular topics, like detailed overviews of conferences, various tools releases, learning materials, and, lately, C++ proposals you don’t want to miss. This turned each digest into quite a long read.
We’ve been considering other formats to make the C++ Annotated more accessible and easier to navigate. Finally, we’ve decided to cut some sections but keep others detailed, to strike a balance between short link annotations and interesting stories we’ve come across and we feel are valuable for the C++ community.
Now it’s your turn! Read, comment, and share your thoughts on the direction we are taking C++ Annotated. We are listening!
A new CLion 2019.3 EAP (build 193.4932.12) is now available! Get it from our website, via the Toolbox App, or as a snap package (if you are using Ubuntu). A patch-update for anyone using the previous EAP build will be available shortly.
A new CLion 2019.3 EAP (build 193.4778.13) is now available! Get it from our website, via the Toolbox App, or as a snap package (if you are using Ubuntu). A patch-update for anyone using the previous EAP build will be available shortly.
In the recent EAP build, we’ve added support for Ninja and other generators in CMake. We’ve had tons of valuable feedback and discovered cases we hadn’t tried on our side! It was great that, with your help, we were able to catch all these problems and we have worked hard over the week to fix the most annoying ones. Today’s build brings a few important fixes:
On Windows, an exception was caught that could prevent your project from correctly loading CMake and the project build (CPP-17728, CPP-17740).
For any generator which is not Makefiles (default) or Unix/MinGW/MSYS Makefiles, the custom make path in the Toolchains settings is ignored now. This was preventing Ninja from working correctly (CPP-17749). Later, we plan to allow users to specify their custom build tool in this field, for example, any custom Ninja version (CPP-17773).
A new CLion 2019.3 EAP (build 193.4697.8) is now available! Get it from our website, via the Toolbox App, or as a snap package (if you are using Ubuntu). A patch-update for anyone using the previous EAP build will be available shortly.
CMake remains the most deeply integrated project model in CLion. However, from the very beginning, we supported only the Makefiles generator. This limitation was caused by the fact that CLion was parsing the output of CMake command run with parameters such as -G “CodeBlocks – Unix Makefiles”, -G "CodeBlocks – MinGW Makefiles", or -G "CodeBlocks – NMake Makefiles" to get information about the project, which made it impossible to change the generator used.
This obviously caused some problems:
Ninja is known to be a much faster generator and is one of the most requested alternatives (CPP-2659).
With the Visual Studio toolchain, CLion was using something very similar to Makefiles – NMake, but the community expected Visual Studio CMake generators (CPP-14730).
As a solution, we considered supporting the CMake server first, but later found a better alternative – the new CMake File API, which was added by the CMake authors as a new and better way to query project information. And now, we are happy to present to you the new CLion 2019.3 build with this new API supported!
In practice, this gives you an opportunity to use any CMake generator of your choice!
Let’s look at the details.
How can I change the generator?
A very simple action is required to change the generator – just go to the CMake Profile settings in Settings / Preferences | Build, Execution, Deployment | CMake and pass the generator name in the CMake options, for example, -G Ninja:
After successfully reloading your project, you can see some similar output via the generation path:
This works for all platforms, remote mode, and the WSL, and for all generators supported by CMake (Ninja, Xcode, Visual Studio, and Makefiles). And you can use different generators in different CMake Profiles if necessary.
There are, however, a few things to bear in mind:
While CMake File API first appeared in CMake 3.14, CLion supports the feature only with CMake 3.15 or higher. (Currently, CMake 3.15.3 is bundled into the 2019.3 EAP builds, so you don’t have to install anything additionally, if you simply rely on a bundled version.)
Make sure you have the generator itself installed on your machine (like Ninja, for example).
Recompiling individual files is not supported in cases where the generator was changed as CLion can’t restore the build rules information easily (CPP-17622).
How do build type settings work for multi-configuration generators?
Xcode and Visual Studio are so-called multi-configuration generators, which means the project files for all build types will be generated by CMake. However, CLion will only use the build type specified in the CMake Profile settings for indexing and the actual building (in the build command line arguments, you can find the proper config is passed by CLion, for example: –config Debug).
That’s it for today! The full release notes are available here.