CLion 2019.2 EAP: Debugger Improvements, Syntax Highlighting for 20+ Languages, and Shell Script Plugin


A new CLion 2019.2 EAP (build 192.5118.29) is now available. Download the full build from our site, install it via the Toolbox App, or use a snap package if you are using Ubuntu. A patch-update for those using the previous EAP build will be available shortly.



When debugging your application, you can use the GDB/LLDB console directly from CLion. Now, command completion works when you press Tab or Ctrl+Space. Note that completion is provided by GDB or LLDB, respectively, while CLion simply gives you access to them.

For GDB:
gdb completion

lldb completion
Continue reading

Posted in Announcement, Early Access Preview | Tagged , , , | 22 Comments

CLion 2019.2 EAP: GDB Server for Embedded Debugging


A new CLion 2019.2 EAP build (192.4787.12) is now available. Download the full build from our site, install it via the Toolbox App, or use a snap package if you are using Ubuntu. A patch-update for those using the previous EAP build will be available shortly.


On-Chip debug with GDB Server

As we announced previously, Embedded Development support is one of our main areas of focus right now. We already had some results to show you in v2019.1, with OpenOCD support and integration with STM32CubeMX, along with major improvements in the debugger like the Memory View.

We are now working on further improvements for general embedded debugging and a peripheral view. In this EAP build, we’ve implemented and polished a Run/Debug configuration for On-Chip debug with GDB Server. This covers such cases as:

  • Using OpenOCD as a standalone GDB Server
  • Using ST GDB Servers (you can get an OS version of the tools on GitHub)
  • Using Segger J-Link GDB Server
  • Using QEMU as a GDB Server
  • Any other specific GDB Server

Continue reading

Posted in Announcement, Early Access Preview | Tagged , , , , | 22 Comments

CLion 2019.1.4 bug-fix update


A new bug-fix update CLion 2019.1.4 has just been released! Build 191.7479.33 is now available to download from our website, via the Toolbox App, or via snap (for Ubuntu). A patch-update will be available shortly.


Here’s a brief overview of the improvements and bug fixes:

  • If you open a project from the invalid compile_commands.json file and then fix it manually, CLion will now suggest to auto-reload the project for you (CPP-16088)
  • Changes in the Environment variables field of the Run/Debug Configurations are now saved correctly by the IDE (IDEA-208525)
  • The font settings on Linux are now saved correctly by the IDE (IDEA-206180)
  • The Find in Path dialog now closes when opening a project in the same window (IDEA-204277)
  • A few IDE hangs are fixed

Full release notes are here.

Your CLion Team
The Drive to Develop

Posted in Announcement | Tagged , | Leave a comment

CLion 2019.2 EAP: Performance Improvements, Platform Changes, and More


Last week we launched the Early Access Program (EAP) for CLion 2019.2. We thank everyone who already gave that EAP build a try and checked new things like parameter name hints, code assistance for .clang-format config files, go to address in memory view, and other enhancements and shared their feedback with us!

Today a new EAP build (192.4488.4) is available to download. As usual, you can download build 192.4488.x from our site, or use the Toolbox App, or use a snap package if you are using Ubuntu. A patch-update for those using the previous EAP build will be available shortly.


C++ related improvements


While our major effort to improve performance is still ongoing, there are a few changes already available in the EAP build. First of all, we’ve removed lags in several cases of in-place Rename refactoring (CPP-16098). This has made the editor much more responsive.

Second, we’ve reduced the number of I/O operations when CLion collects compiler info in the full remote mode (when you run CLion locally and work with your project remotely). This has improved the performance of the Loading CMake step in remote cases.

Naming convention settings

In the first 2019.2 EAP build, we introduced reworked and more flexible naming convention settings. This time we’re polishing the UI/UX to make it possible to work with the settings table without using the mouse:

  • Use -> / < - to navigate between the columns in the selected entry.
  • Use Space to open the dropdown menu, and use Esc to close it.
  • Use Tab to navigate between the options in the checkboxes, and use Space to select/deselect them.

Naming Settings

And more

A few other C++ related fixes include:

  • Move refactoring got further improvements, including a fix for the refactoring failing on global variables (CPP-16337).
  • CLion shouldn’t add headers that are already included when refactoring or applying quick-fixes (when the Clangd-based engine is used) – CPP-15972.
  • A fix for a regression with “OpenOCD Download & Run” configuration that stopped working.

Continue reading

Posted in Announcement, Early Access Preview | Tagged , , , , , , | 14 Comments

Core C++ 2019 Trip Report

More and more C++ events, community meetups, and conferences are appearing around the globe. 2019 is definitely looking like a year for new C++ conferences. Take, for example, C++ on Sea (UK, in February) or the upcoming CPPP (France, in June). Even C++ Russia now has two editions per year – one in Moscow and one in St. Petersburg. And, finally, there’s the event we just visited – Core C++, held in Tel Aviv, Israel.

Core C++ was started by the organizers of two big local communities, the Core C++ meetup in Te Aviv and the Haifa::C++ meetup. Adi Shavit from Tel Aviv is a well-known international speaker you may have met at one of the many C++ events around the world. The event was hosted at the Academic College of Tel Aviv–Yaffo, very close to the beautiful and historic old city of Jaffa.

Jaffa city
Continue reading

Posted in Conference & Events | Tagged , , | 4 Comments

CLion Starts 2019.2 EAP: Parameter Hints, Go to Address in Memory View, Code Assistance for ClangFormat Config Files, and More


We’re launching the Early Access Program for CLion 2019.2! As usual, the EAP builds are free to use and no license is required. Get early access to the upcoming changes and enhancements and give us your feedback! We want to test it in all kinds of non-standard or unusual environments you may have set up, and collect and fix as many issues and regressions as possible. So, please try these builds and let us know what you think!

Note you can install any EAP build in parallel with a stable CLion release such as 2019.1.

CLion 2019.2 EAP starts

As usual, you can download build 192.4205.36 from our site, use the Toolbox App, or a snap package (if you are using Ubuntu).

Download CLion 2019.2 EAP

This EAP build polishes lots of features first introduced in the recent v2019.1, but also brings some new enhancements. The main highlights include:

Continue reading

Posted in Announcement, Early Access Preview | Tagged , , , , , , , | 50 Comments

Getting Started with the Conan CLion Plugin

Wondering how to add a package to your C++ project? In this guest blog post Javier G. Sogo from JFrog shares how to start with Conan package manager in CLion.

Javier G. Sogo Javier G. Sogo
Software Engineer at JFrog
After several years of C++ development, I moved to Python to learn the best practices and tools. Now I’m back building Conan, the C/C++ package manager.

Writing a C++ project from scratch is always a delightful challenge. Starting from a blank page writing your code and creating your functionalities, all the way through to building on top of solid and high-performance libraries… but wait! Sometimes it’s not easy to get those libraries available for your project to compile and link, and possibly you are not experienced in that build system or the library may require some patches to be built for your platform.
The lack of a package manager in the C++ world has slowed many projects down, requiring dedicated efforts to handling external libraries or rewriting functionalities to avoid using third parties.
Conan is an open source, decentralized package manager that simplifies the process of integrating and reusing C and C++ libraries and packages. It automatically manages and reuses binaries for any possible configuration, increasing development speed. Conan is also able to build and cross-build packages from sources, it integrates with any build system, with very high flexibility and customization capabilities.
In this blog post, we will show how to use Conan in your CLion workspace to get your preferred libraries ready to use in your project. We will use the Conan-CLion plugin to integrate both applications smoothly, for example, by building an MD5 hasher using an already available implementation from the Poco libraries.

Installing all the parts

1. Conan-CLion Plugin

To follow along with this example, you’ll need to install the Conan by JFrog plugin from the JetBrains marketplace. It can be easily installed using the Plugins section in the Preferences/Settings window, or from the welcome screen using the Configure>Plugins option.
Install Conan plugin for CLion from the Welcome screen

After restarting CLion a new “Conan” tool window will appear at the bottom of the IDE, which is ready for you to use.
Conan plugin inside CLion interface (Conan not installed yet)

2. Conan Client

Next, you’ll need to install Conan. Conan is a python application, you can install it using pip (pip install conan) inside a Python virtual environment or system-wide, or you can download a standalone application and unpack it into your system, choose the way that best fits your needs from the download page.
We highly recommend that you read the Conan documentation; although the default configuration is enough for this example, it is important for you to know about many other important features that are not covered in this article. Including, the distributed nature of Conan that allows mixing different origins for your libraries, JFrog Artifactory integrations, workspaces, etc. These features will help you in developing high-quality software.

The distributed architecture of Conan allows mixing different origins (and destinations) for your libraries

3. Conan Plugin Configuration

There are a couple of configuration points we need to address before running our example, these configurations only need to be done once for all your projects. First of all, you will need to provide the path to the Conan executable you want to use in the Preferences window (leave it empty to use Conan from the PATH).


Second, we need to define the correspondence between CLion CMake profiles and Conan profiles. CLion profiles are a handy way to create different configurations to build your project, the same as Conan profiles, that’s why both should match.

A Conan profile is a file where the user defines a set of settings, options, environment variables, and build requires, that can be reused to build any package. These files can be handled individually using conan profile commands or, if you are working with other people, you will probably want to maintain a shared configuration with your colleagues using conan config install commands. Create as many profiles as you want using the command line or copy an URL with your shared Conan configuration into the plugin settings. For more information related to this core feature of Conan, the documentation about using profiles is a good starting point.
Once your profiles are ready, match them with the CLion ones using the Button button, a window will pop up for you to make these assignments.
CMake profiles in CLion matched with profiles used by Conan

Creating the C++ project

After the configuration is complete, we can leap into C++. The following example demonstrates the MD5 hashing utility in the Poco library, a few lines of code should be enough to get us started:

If we try to compile this project using CLion it will fail, because the Poco libraries are missing. This is where our package manager comes into action.

Getting your dependencies with Conan

Conan uses a separated file to store information related to a project. This can either be a plain conanfile.txt file, or a python file that handles more complex logic regarding your dependencies. The Conan plugin can work with both of these file types.
For this example we only need a couple of lines in a conanfile.txt that you should add to your repository:


These lines notify Conan that our project requires the Poco library, and provide the version and origin for it. Conan will look in the remotes and retrieve the recipe for Poco from there, it will also grab the binaries if they’re available for your configuration and, if not, it will trigger a compilation from sources. All of this will be done using the Conan install button, Conan icon , that can be found in the Conan tool window.

Conan installs the required library and transitive dependencies

As you can see, Conan not only installed the Poco libraries, but also OpenSSL and ZLib too. This is because they are transitive dependencies of Poco. If binaries matching your configuration are available in the remote, Conan will just download them, otherwise, Conan will compile these packages from sources no matter if they use CMake or other build systems (OpenSSL uses Makefiles).
Conan resolving the complete Poco dependency graph


Conan will create a file for each of the generators listed here, as CLion uses CMake we need that generator. These files contain all the information of the requirements, including: paths to includes, libraries or resources, and compile flags. Basically, everything that needs to be consumed by your project. You only need to include this file into your build system, there is no need to change anything else, and you’re ready to go.
Modify your CMakeLists.txt to include this automatically generated file, named conanbuildinfo.cmake:

Compile again and run your project. Conan will take care of your dependencies, by locating and downloading (or compiling) them, making them available for your project. If you feel that this implementation requires modifying your project, you can try other CMake related generators available in Conan, such as cmake_find_package or cmake_paths. Additional information on how to activate these generators can be found in the Conan documentation.


Alongside CMake and CLion, Conan has become one of the big C’s for the C++ language. Having a package manager encourages the community to share their libraries and build functionalities on top of existing ones, modernizing the C++ ecosystem towards a more mature and useful one. It also allows companies to have a professional tool to build all their internal libraries and third-parties using the same process, preserving consistency and reproducibility of their builds, and keeping their developers focused on their job.
The plugin in its first version implements just some basic functionalities of Conan, we highly recommend you to use it in your projects, but also to explore all the functionalities that Conan provides. We’re always happy to receive feedback related to both the CLion plugin and Conan in general.

Happy Coding!

Posted in Tips'n'Tricks | Tagged , , , | 23 Comments

CLion 2019.1.3 update


Please welcome a new bug-fix update: CLion 2019.1.3! Build 191.7141.37 is now available to download from our website, via the Toolbox App, or via snap (for Ubuntu). A patch-update will be available shortly.


Here are the highlights:

  • CLion can now work with header guards that use several define patterns (CPP-15736).
  • CMake 3.14.3 is now bundled.
  • The exception, when Google Sanitizers were launched from CLion, is fixed.

Full release notes are here.

Your CLion Team
The Drive to Develop

Posted in Announcement | Tagged , | 30 Comments

CLion 2019.1.2 critical bug-fix update


A few days ago we published the first bug-fix update (2019.1.1) for the recently released CLion 2019.1. Thanks to our vigilant users, we’ve learned quickly that this build is affected by a very unpleasant freeze on IDE start when several projects are opened (CPP-16039, OC-18440). The IDE fails to recover in that case, unfortunately.

We are sincerely sorry for this and apologize for any inconvenience it might have caused. We’ve analyzed the source of the issue and will do our best to prevent such situations in the future.

If you are using v2019.1 (and especially 2019.1.1), we recommend that you update to the newest 2019.1.2 build, which is now publicly available. Download it from our website, via the Toolbox App, or via snap (for Ubuntu). A patch-update will be available shortly.


Your CLion Team
The Drive to Develop

Posted in Announcement | Tagged , | 19 Comments

CLion 2019.1.1 Bug-fix Update


With CLion 2019.1 released just a couple of weeks ago, it’s already time for the first bug-fix update. Build 191.6707.62 is now available to download from our website, via the Toolbox App, or via snap (for Ubuntu). A patch-update will be available shortly.


This update includes a few major fixes and enhancements:

  • This update fixes an annoying issue with the false redefinition errors shown by the clangd-based engine in several cases (CPP-15464).
  • For remote toolchains, the Cannot get compiler information error is now fixed (CPP-14477).
  • Move refactoring dialog (notifying about escalating the visibility) no longer hangs (CPP-15655).
  • In the newly added naming convention settings (Settings/Preferences | Editor | Code Style | C/C++ | Naming Convention), Upper_Snake_Case is now available as one of the options.
  • Bundled CMake was updated to v3.14.2.
  • Custom build targets and run/debug configuration are useful for compilation database projects, especially when using them to workaround Makefiles and other project models not natively supported in CLion. In this update we made the configuration process even more friendly – CLion now allows you to configure Custom Build Target right from the Run/Debug configuration settings dialog:

The full release notes are available here.

Want to know what’s next? See our roadmap for CLion 2019.2.

Your CLion Team
The Drive to Develop

Posted in Announcement | Tagged , , | 9 Comments