The CLion 2022.1 release is focused on quality improvements. It enhances existing workflows for remote development, Docker, CMake projects, and CUDA debugging, as well as addresses the most annoying bugs in code completion, inlay hints, and other subsystems.
The new remote development workflow is now bundled into CLion and available from CLion’s Welcome screen. Use a powerful remote machine to execute all IDE operations and to build, run, and debug code – all while running the IDE on a local thin client.
Cloud dev environments featured in Space can now be used with CLion to speed-up onboarding, get a ready-to-use IDE in seconds, and manage your development resources efficiently. Learn more about Space dev environments.
Learn more about remote development with the thin client or consider the other types of remote configurations available in CLion.
When working with the Docker toolchain, you can now provide additional container settings, such as port and volume bindings, and so on.
The Valgrind memcheck tool for detecting memory-usage problems now works with the Docker toolchain.
CMake is a first-class citizen project model in CLion. Version 2022.1 addressed inconsistencies and lack of configuration abilities in the core areas of CMake support – CMake presets and CLion CMake profiles.
CLion now automatically creates CMake Profiles for configure presets (it was only available for build presets before). The change makes the configuration process easier and allows the removal of redundant build presets.
CLion now also works with the --preset
argument passed to the
cmake command. The data from the preset is loaded into build type,
toolchain, and build directory settings.
When the parallel reload of CMake profiles is not possible, CLion can now reload them sequentially. You can enable this behavior in Settings | Advanced Settings | CMake.
CMake generators are now easier to configure in CLion with the new and updated options:
In CLion, you can now visually inspect why it takes a long time to reload your CMake project. Starting with CMake 3.18, the new tracing can be enabled in the CMake settings. CLion will help you run the tracing and visualize the results. Learn more.
CMake scripts are now formatted more accurately:
if() .. endif()
, else()
and elseif()
,
endforeach()
, endfunction()
, endmacro()
,
and endwhile()
are aligned correctly.
The CUDA-GDB debugger can now be used in CLion. To make it work, you’ll need to specify the cuda-gdb binary in the debugger setting of your current toolchain, and use the following compiler option:
add_compile_options(-G)
to add CUDA debug symbols.
In the layout settings of the debugger tool window there are two new options available:
The option to show both decimal and hex values in the debugger now works for LLDB on Windows (Settings | Build, Execution, Deployment | Debugger | Data Views | C/C++ | Show integers as hex values and Display alongside the original value).
The Embedded GDB Server configuration can now reset the device at different stages:
Macros now work in Embedded GDB Server configuration fields.
The FreeRTOS GCC/Posix port is now supported and enables FreeRTOS debugging on Linux.
With code analysis being a key part of the IDE, we’ve been working to make it more accurate and easier to configure, and to make its notifications more informative.
Intention action suggestions are available via
Alt+Enter
(alternatively, click the bulb icon). In the suggestions list,
now you can also see a preview of the result of the selected action. The preview is
available for De Morgan's laws, invert if condition, merge if-else, merge nested if,
Clang-Tidy, MISRA, Clazy, split into declaration and assignment, split into separate
declarations, and a few other actions.
Learn more.
Clang-Tidy and MISRA settings in Settings | Editor | Inspections | C/C++ | Static Analysis Tools were reworked to make the checks configuration process easier. A new visual representation includes a tree with all the checks. Speed search helps you find the required checks quicker – just start typing the name you are looking for when the dialog is in focus.
For Clang-Tidy, the dialog also links to LLVM documentation to help you learn about the checks in more detail.
The accuracy of the code analysis engine in CLion was increased by addressing a selection of issues, for example:
Parameter and type hints in CLion are now more informative and accurate for modern C++ code.
CLion now displays a user-friendly wstring
alias as a type hint for the
std::basic_string<wchar_t>
type.
CLion now displays an accurate type hint for dependent types.
CLion 2022.1 added parameter info for struct literals and initializer list,
as well as made parameter hints more informative for the emplace
,
emplace_back/emplace_front
, and make_unique/make_shared
functions.
Hints for array indices can now be disabled if you don’t need them.
New formatter options for structured bindings were added to Spaces and Wrapping and Braces sections.
Small but helpful UX improvements were introduced to make everyday IDE actions more convenient and powerful.
When creating a new C++ class, you can now specify the namespace where you’d like the new class to be located. You can write in any existing or nonexistent namespace (which will be created along with the new class), a nested namespace, or even an anonymous (unnamed) namespace if you enter a blank space in this field.
In the Structure view, elements can now be grouped by the qualified name. Select between grouped view or plain view with a fully qualified name included in each element name.
A new stub project generator for Rust projects will help you even if you don’t have the Rust plugin installed. It will help you install the plugin and navigate you through project creation.
CLion 2021.3 supports a variety of toolchain setups and makes it easier to configure them. It makes development more productive with the improved rendering in the debugger and simplifies modern C++ code maintenance with in-editor type hints. Static analysis in this new release is able to catch a new batch of typical C++ pain points.
In CLion, a toolchain is a set of all the necessary tools required for building and running your application. CLion v2021.3 makes toolchains more flexible, easier to configure and customize.
Docker containers are one of the most popular and easiest ways to set up an environment and start working with it. Instead of using Remote toolchain for Docker in CLion, you can now use the native Docker toolchain. It avoids redundant source code synchronization, as the project folder is simply mounted to the container.
CLion also bundles the Docker plugin, which brings the Services tool window and many docker-specific actions to the IDE.
Suppose you are using a custom compiler or a compiler not yet known to CLion natively, which is often the case in embedded development. There is now a way to describe all the necessary information about the compiler to CLion and work with it as if it were natively supported.
Use Settings | Build, Execution, Deployment | Toolchains | Custom Defined Compiler to enable it and provide the *.yaml file that contains your custom compiler definition. Check out the sample configs prepared by the CLion team for you.
In some cases the environment in which the compiler runs is initialized via script. It can initialize compiler environmental variables, customize the PATH variable, and more.
Use Settings | Build, Execution, Deployment | Toolchains and select Add environment | From file in CLion to source such a script for the toolchain you are using.
CLion now bundles the MinGW toolchain on Windows for quick setup, which you can rely on if you don’t have any other options installed on your machine. The exact version bundled is MinGW-w64 9.0 with languages=c,c++
, posix threads, and seh
code exceptions.
Another improvement for MinGW users is a bundled 64 bit GDB v10.2 with Python support.
A new System toolchain on Windows, similar to the same toolchain type on Linux and macOS, allows configuring CMake, compiler, and debugger executables without selecting a predefined environment (like MinGW, Cygwin, WSL, or Visual Studio). This might be used for the ARM toolchain or other embedded toolchains on Windows.
A new UI for setting the CMake generator was added to the CMake Profile settings page (Settings | Build, Execution, Deployment | CMake). Users can use the default value for the toolchain selected or set any generator from the predefined list.
When the UI field is used, CMake options on the same page are updated automatically and vice versa.
Ninja is one of the most popular and effective CMake generators currently used. CLion 2021.3 comes with Ninja v1.10.2 bundled.
For local toolchains (i.e. excluding Remote, Docker, WSL) and CMake v3.20 and higher, Ninja is now the default generator for newly created projects or projects opened in CLion for the first time.
CLion now bundles CMake 3.21.1. CMake File API is used by default to query project information in CLion for CMake v3.20 and higher. Learn more.
CLion now supports CMake Presets v3.
Use the new Build directory option in Settings | Build, Execution, Deployment | Makefile to configure the directory where all make tasks are executed when the Makefile project is loaded in CLion. The configured directory is passed via -C
option to the make call. Folders like autom4te.cache in the build directory are marked by CLion as excluded.
While it’s still possible to use the Gradle project model for C++ projects in CLion, both Gradle and Gradle Native plugins in CLion are now unbundled. You can install them via Settings | Plugins.
Heavily templated standard library types, or types with global and obvious namespace specifiers, can produce long entries in the variables view during debugging.
To improve the debugging experience, CLion now performs some additional processing to render types in the variables view in a more readable and friendlier way:
In the frames view in the debugger, in addition to type rendering improvements, CLion now improves functions presentation:
A new View as Array… action is now available for any pointer variable and adds a watchpoint that renders a pointer value as array. The action is available in the context menu in the variables view. All you need to do is specify the size of the array.
To control the presentation of the types, variables, and frames in the debugger, use the new settings in Settings | Build, Execution, Deployment | Debugger | Data Views | C/C++ (or just Data Views, without the separate C/C++ section if all other languages debuggers are disabled for you in CLion).
Alternatively, you can control the presentation from the context menu right in the Debug tool window.
As part of the ongoing debugger UI redesign, Evaluate expression is now integrated right in the Debug tool window. This makes it more discoverable and easy to use.
When debugging multithreaded applications, you have to track multiple threads at the same time. The new Parallel Stacks view is implemented as a separate tab in the Debug tool window and shows thread call stack information for all the threads. It allows checking the call paths and execution points of all running threads.
Hex view for numeric variables was improved and is no longer an experimental feature in CLion. Enable it in Settings | Build, Execution, Deployment | Debugger | Data Views | C/C++ or in the context menu in the variables view.
CLion 2021.3 comes with bundled LLDB v13.
FreeRTOS thread view was expanded by adding objects and heap views:
Zephyr RTOS is now supported. To enable the tasks view, similar to the one available for FreeRTOS, use Settings | Build, Execution, Deployment | Embedded Development | RTOS Integration and select Zephyr there.
CLion 2021.3 adds type hints for deduced types to increase code readability. The new hints help with types for auto variables, in structured bindings, and for lambda return types.
You can disable or enable specific type hints in Settings | Editor | Inlay Hints | C/C++ or right from the hint’s context menu.
If the type hint includes the template instantiation, the template arguments can be collapsed by simply clicking on the angle brackets. Also, Ctrl+Click allows you to navigate to the declaration of the type you clicked on.
When exploring the structure of the file in the Structure tool window (Alt+7) or in the Structure pop-up (Ctrl+F12), you can distinguish functions with the same names more easily, as CLion now shows qualified names for the member functions there.
LLVM tools in CLion were upgraded to v14.0.0. This improves the accuracy of the Clangd-based language engine and updates bundled Clang-Tidy and ClangFormat executables. For Clang-Tidy, this also means there are a few new checks you’ll be notified about when CLion is first launched after the update.
New MISRA checks were added to CLion’s built-in analyzer:
The full list of MISRA C 2012 and MISRA C++ 2008 checks available in CLion can be found here.
CLion’s data flow analysis now treats different calls differently, and so has become more accurate. This specifically means that:
CLion’s lifetime analysis (based on Herb Sutter’s Lifetime Safety proposal) was enhanced and it can now capture cases like dangling iterator and modified owner (as owners passed by non-const reference are assumed to be modified).
Sometimes, you may have several commits that are ready to ship while others are still a work in progress. In such cases, you may want to push only the ones you are confident about. The new Push All up to Here action allows you to push commits up to the one you have selected in the Log tab of the Git tool window.
""
instead of <>
for header files belonging to the project. This default behavior can be changed by turning off Settings | Editor | General | Auto Import | C/C++ | Auto import local files with quotes.The C++ ecosystem is evolving, and so is our cross-platform C/C++ IDE. CLion 2021.2 can help you by protecting your code from typical C++ memory safety issues, simplifying your build configurations, and making debugging easier and more effective.
CMake 3.20 is supported and bundled in CLion 2021.2. This version includes CMake Presets, major updates to the CMake File API, support for C++23 compiler modes, and many updates for CUDA developers.
Store your project build configuration in new and universal CMake Presets, and CLion will automatically detect and import the necessary CMake Build Presets.
It will notify you and suggest reloading the presets if any changes are introduced to them, either in the editor or externally.
You can manage the imported presets in Settings | Build, Execution, Deployment | CMake.
Additional templates for creating new CMake projects are available in the New Project wizard. They cover C and C++ libraries and executables, CUDA libraries and executables, and Qt projects.
You can find and edit the templates in Settings | Editor | File and Code Templates | Other.
In the Before Launch section of the Run/Debug configuration, users can now specify CMake Target tasks, both built-in and user-specified. These tasks will be performed before starting the selected target.
CLion now automatically detects GNU Autotools, Kbuild, and PERL MakeMaker projects. When these projects are loaded as Makefile projects, CLion automatically detects preconfiguration scripts and executes them to get the Makefile and load the project from it.
CLion 2021.2 detects whether the project has any configure.ac or configure scripts required to create its Makefile. On project load, CLion executes these preconfiguration steps automatically by using the command set in Settings | Build, Execution, Deployment | Makefile settings.
If you open a project in CLion without loading the Makefile project model, you can still load it later. This might happen if your project requires some custom preconfiguration steps and no final Makefile is available until those steps are finished. To load it, call the context menu on the project's top-level Makefile and select Load Makefile Project.
When you use the Microsoft Visual C++ toolchain on Windows, CLion provides its own LLDB-based debugger. Data rendering in this debugger was improved in v2021.2:
Postmortem debugging with core dumps is now supported on Windows. Use the Run | Open Core Dump action to start a core dump debug session.
Instead of the internal console used by CLion, on Windows, it’s now possible to switch to the cmd.exe console to run and debug applications. Use the Run in external console checkbox in Run/Debug configuration to change the behavior.
There are cases with breakpoints when path mappings are too complex to fill them in in the debug configuration, or when the
-fdebug-prefix-map
option is set in the debugger. In these situations, it's now possible to use just the file name instead of its absolute path during debugging sessions.
While stepping through assembly code, you can now add/remove breakpoints on instruction lines. For non-default configuration of these address breakpoints, use the right-click context menu menu.
To avoid cluttering the editor with many tabs during stepping, consider enabling the preview tab. In CLion 2021.2 it works during debug sessions and allows you to view files in a single tab one by one, without opening each file in a new tab.
To improve debugging with LLDB, LLDB v12.0 is now bundled. Remote debugging of any arbitrary executable from CLion is now possible with LLDB (in addition to GDB). Use the new Remote Debug configuration to provide arguments to connect to the remote host. On a remote host, you'll need to launch lldb-server/debugserver. Check out our web help for more details.
If you debug applications with FreeRTOS in CLion, a view with the task lists is now available. You can switch to the task you are interested in to explore task variables and more.
Diagnose common cases of dangling pointers and escaping from a local scope by using static analysis. This capability is made possible by the Lifetime Safety proposal that CLion has partially implemented. GSL annotations are also supported to let you mark your code and make local analysis more accurate.
Cling is an interactive C++ interpreter built on top of Clang and LLVM. It allows you to run code without building the project, which can be especially useful for prototyping and learning C++.
Install Cling on your system and benefit from its integration with CLion:
Profiling is now possible in remote mode and on WSL. In both cases, the Perf backend is required. Find the instructions in our web help on how to install the Perf tool for your particular kernel release.
You'll also need to configure the path to the Perf tool in CLion Settings | Build, Execution, Deployment | Dynamic Analysis Tools | Perf.
For Docker containers with mapped volumes, remote development without source synchronization is now available in CLion. This mode removes the code duplication and the initial project upload step. Learn how to configure this mode in Docker and in CLion.
WSL configuration in CLion has become much easier, as you no longer need an SSH server inside a WSL distribution to work with WSL in CLion. CLion now uses a dedicated WSL API.
CLion now supports WSL whether it's installed from the Microsoft Store or a custom distribution.
Text search through file revisions in Local History appeared in CLion 2021.2, helping you locate the point you want to roll back to more easily.
In v2021.2, we expanded the list of possible pre-commit actions with the ability to execute tests. Tick the Run Tests checkbox and select the configuration to run.
We also added the ability to customize the Analyze code and Cleanup options by clicking Choose profile next to them.
CLion shows the difference between the initial and changed files in the editor by default, no matter where you invoke the Show Diff action. If you prefer to track changes in a separate window, simply drag the desired file outside the editor.
CLion 2021.2 offers a way to secure your commits. To enable Git commit signing with GPG, go to Settings | Version Control | Git, click Configure GPG Key, and then select it from the drop-down list.
Do you use the Toolbox App to manage CLion installations and updates? Now you won't miss any critical product updates from it. Your IDE will alert you if there is a new version available for download and give you the option to upgrade right from CLion.
Some other useful improvements and enhancements in CLion 2021.2 include: