Get Involved/development/IDE configuration/CLion: Difference between revisions
(→Set defaults for new projects: specify steps in list, to easify following them) |
m (→Non-project executable to run: indent statement) |
||
Line 175: | Line 175: | ||
* Click "+" button to add a new configuration | * Click "+" button to add a new configuration | ||
* Choose type ''CMake Application'' | * Choose type ''CMake Application'' | ||
The new configuration will appear. | :The new configuration will appear. | ||
* Give it a meaningful name, for example ''ark (run dolphin)''. | * Give it a meaningful name, for example ''ark (run dolphin)''. | ||
* In ''Target'' field choose ''All Targets''. | * In ''Target'' field choose ''All Targets''. |
Revision as of 08:12, 25 October 2023
CLion is a proprietary IDE for C++ from JetBrains.
Install CLion
Follow the Install CLion documentation.
If using Arch Linux, you can install the AUR package clion.
Setup a KDE project in CLion
In this article we will use dolphin as an example project. Prerequisite is that you have successfully built a project following kdesrc-build setup procedure. This article assumes your username is username
, and the kdesrc-build setup path is /home/username/kde/
. Replace them to the your values in the specified commands.
Importing project
In the "Welcome to Clion" window press "Open" button. In the "Open File or Project", chose a root folder of dolphin project (~/kde/src/dolphin
) or select the CMakeLists.txt
file in that directory. It will ask how do you want to open it. Press "Open as Project" for file, or "Open as CMake project" for directory.
CMake profile
After previous step, the new window will open to setup cmake profile. You can reach these settings later by going to Settings | Build, Execution, Deployment | CMake.
- Choose Debug build.
- In the Generator, set "Let Cmake decide".
- In the Build directory, specify the build directory path, for this example it will be
/home/username/kde/build/dolphin
.
- Under CMake options (in this same window), we must set some important variables such as CMAKE_PREFIX_PATH. If the prefix was in "/home/username/kde", then the CMake options line would look like:
-DCMAKE_PREFIX_PATH=/home/username/kde/usr
-DCMAKE_MODULE_PATH=/home/username/kde/usr/lib64/cmake:/home/username/kde/usr/lib/cmake
-DQT_PLUGIN_PATH=/home/username/kde/usr/lib64/plugins:/home/username/kde/usr/lib/plugins
-DXDG_DATA_DIRS=/home/username/kde/usr/share
You probably would want to save that to file `~/kde/clion_cmake_options.txt` for future use.
- Press OK.
Run/Debug Configuration
In the run/debug target (in the upper right corner of main window), select "dolphin".
Expand it and choose Edit.
The Run/Debug Configurations window will appear.
In the Environment variables field click edit button.
You can add variables in there manually or reuse exports from prefix.sh
script from build directory.
Note: if you want to modify debugging output messages, you can add corresponding variables there. See Guidelines and HOWTOs/Debugging/Using Error Messages#Controlling_Messages.
Variants to setup environment variables
Reusing existing prefix.sh
For convenience, copy the /home/username/kde/build/dolphin/prefix.sh
to /home/username/kde/clion_run_environment.sh
. Use the following syntax for setting variables in that script: export VAR=value
.
In the Environment Variables dialog, in the Load Variables from file field, paste the path /home/username/kde/clion_run_environment.sh
.
While it is possible to specify some additional variables alongside with environment script (as specified in #Setting variables manually), it may be inconvenient to edit them in case you want to keep the same variables for many run/debug configurations. For example, when you decide to change the QT_MESSAGE_PATTERN. There is a way to keep them in one place, while having control over them.
The environment script supports sourcing another script. So we need to place our common environment variables to separate file:
~/kde/qt_logging_environment.sh
export QT_FORCE_STDERR_LOGGING=1
export QT_LOGGING_RULES='ark*=true;kf.coreaddons=false;kf.service.services=false;kf.service.sycoca=false;qt.qpa.wayland=false;kf.moretools=false;default=false'
export QT_MESSAGE_PATTERN='[%{time hh:mm:ss} %{if-debug}D%{endif}%{if-info}I%{endif}%{if-warning}W%{endif}%{if-critical}C%{endif}%{if-fatal}F%{endif}] %{function} %{file}:%{line} %{message}'
and source it from the first file:
~/kde/clion_run_environment.sh
...
source /home/username/kde/qt_logging_environment.sh
But keep in mind, you need to touch the original script for changes to be applied. See CPP-35329.
Setting variables manually
Take the content of the generated environment script:
~/kde/build/dolphin/prefix.sh
export PATH=/home/username/kde/usr/bin:$PATH
# LD_LIBRARY_PATH only needed if you are building without rpath
# export LD_LIBRARY_PATH=/home/username/kde/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
export XDG_DATA_DIRS=/home/username/kde/usr/share:${XDG_DATA_DIRS:-/usr/local/share/:/usr/share/}
export XDG_CONFIG_DIRS=/home/username/kde/usr/etc/xdg:${XDG_CONFIG_DIRS:-/etc/xdg}
export QT_PLUGIN_PATH=/home/username/kde/usr/lib/x86_64-linux-gnu/plugins:$QT_PLUGIN_PATH
export QML2_IMPORT_PATH=/home/username/kde/usr/lib/x86_64-linux-gnu/qml:$QML2_IMPORT_PATH
export QT_QUICK_CONTROLS_STYLE_PATH=/home/username/kde/usr/lib/x86_64-linux-gnu/qml/QtQuick/Controls.2/:$QT_QUICK_CONTROLS_STYLE_PATH
and translate it to the form of variables list that you can paste to CLion. Note that their variables have trailing '$' sign. In order to reuse it when loading other KDE projects in CLion, save it to the file:
~/kde/clion_run_environment.txt
PATH=/home/username/kde/usr/bin:$PATH$
XDG_DATA_DIRS=/home/username/kde/usr/share:$XDG_DATA_DIRS$:/usr/local/share/:/usr/share/}
XDG_CONFIG_DIRS=/home/username/kde/usr/etc/xdg:$XDG_CONFIG_DIRS$:/etc/xdg
QT_PLUGIN_PATH=/home/username/kde/usr/lib/x86_64-linux-gnu/plugins:$QT_PLUGIN_PATH$
QML2_IMPORT_PATH=/home/username/kde/usr/lib/x86_64-linux-gnu/qml:$QML2_IMPORT_PATH$
QT_QUICK_CONTROLS_STYLE_PATH=/home/username/kde/usr/lib/x86_64-linux-gnu/qml/QtQuick/Controls.2/:$QT_QUICK_CONTROLS_STYLE_PATH$
Then in the Environment Variables dialog, paste the contents of the ~/kde/clion_run_environment.txt
.
Tips and Tricks
Set defaults for new projects
For convenience, you can specify default settings for new opened projects. This allows you to not set it manually for each new project you open in CLion.
- Go to File | New Projects Setup | Settings for New Projects.
- The Build, Execution, Deployment | CMake page will be opened.
- Open the Debug profile.
- In the Generator field choose 'Let CMake decide'.
- In the Build directory field type:
$PROJECT_DIR$/../../build/$PROJECT_NAME$
. - Press OK button.
JetBrains Dolphin Plugin
JetBrains Dolphin Plugin is a service menu plugin (context menu action) which allows you to easily open folders as ide projects.
You can install it from the store.kde.org (in the Configure Dolphin choose Context Menu, then press Download New Services... button. Search for Jetbrains Dolphin Plugin by alex1701c).
If using Arch Linux, you will prefer to install from AUR.
JetBrains Runner
You can install JetBrainsRunner search plugin to be able to quickly open recent projects in JetBrains IDEs.
If you using Arch Linux, you will prefer to install from AUR.
Plugins for CLion
Qt6Renderer
Currently, the Qt classes do not support pretty printing in debugger in CLion out of the box. See Bug CPP-605 for more information.
You can install Qt6Renderer plugin by Nikita Kobzev. Note that currently it works only with lldb debugger.
GNU GetText files support (*.po)
Install the GetText files support (*.po) plugin. It will make the source lines in the po files clickable.
For example, you search the strings in local language, to find the place in code where it is used, you find it in *.po files. They contain stanzas like this:
~/kde/src/ark/po/ru/ark.po
#: part/part.cpp:132
#, kde-format
msgid "Comment has been modified."
msgstr "Комментарий был изменен."
You want to quickly jump to the source file. That source file (part/part.cpp:132
) becomes a clickable link if you install the plugin.
Non-project executable to run
When developing a library, it may be convenient to launch some application that uses it, from the current project. For example, you work with Ark's libraries used in Dolphin context menu actions. You can make your run configuration to launch custom binary - dolphin.
To do that, do the following:
- Open Run/Debug Configurations window
- Click "+" button to add a new configuration
- Choose type CMake Application
- The new configuration will appear.
- Give it a meaningful name, for example ark (run dolphin).
- In Target field choose All Targets.
- In the Executable field, specify path to dolphin binary: /home/username/kde/build/dolphin/bin/dolphin.
- In the Environment Variables set it up as described in the corresponding section.
- Press OK.
Now when you run this configuration, the Ark will be built, but Dolphin will be launched.
Use KWallet for git credentials
You need to enable this key in Registry: credentialStore.linux.prefer.kwallet
. It allows to use KWallet if KWallet & SecretService are both available.
Use native titlebar with New UI
It is possible to switch to "New UI", while still showing normal window titlebar. For this, open registry (Double tab Shift, search for Registry) and disable property ide.linux.hide.native.title
.
Under rework
This section is not accurate. Needs reworking.
A screen recording version is available https://www.youtube.com/watch?v=_V5AqMj2fWc
Note that I tell kdesrc-build to use the CMake generator "Unix Makefiles" by commenting out the line cmake-generator
from the kdesrc-buildrc configuration file. I also need to configure kdesrc-build to use the CMake build configuration "Debug" in order to be able to use the debugger in the IDE, and I use more than 4 CPU threads. For more details see the wiki page for the IDE QtCreator.
cmake-options -DCMAKE_BUILD_TYPE=Debug ... num-cores 14 ... #cmake-generator Kate - Ninja
Build a KDE project e.g.
kdesrc-build kcalc --debug
Look at the output, write down the part similar to:
Running cmake targeting Unix Makefiles... cd /home/username/kde/build/kcalc run_logged_command(): Module kcalc, Command: cmake -B . -S /home/username/kde/src/kcalc -G Unix Makefiles -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -DBUILD_WITH_QT6=ON -DCMAKE_CXX_FLAGS:STRING=-pipe -DCMAKE_INSTALL_PREFIX=/home/username/kde/usr -DCMAKE_PREFIX_PATH=/home/username/Qt/6.6.0/gcc_64 Setting environment variable XDG_DATA_DIRS to /home/username/kde/usr/share:/usr/share/plasma:/usr/local/share:/usr/share:/var/lib/snapd/desktop Setting environment variable PATH to /home/username/kde/usr/bin:/home/username/Qt/6.6.0/gcc_64/bin:/home/username/.local/bin:/home/username/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin Setting environment variable CMAKE_MODULE_PATH to /home/username/Qt/6.6.0/gcc_64/lib/cmake:/home/username/kde/usr/lib64/cmake:/home/username/kde/usr/lib/cmake Setting environment variable PKG_CONFIG_PATH to /home/username/kde/usr/lib/pkgconfig:/home/username/Qt/6.6.0/gcc_64/lib/pkgconfig Setting environment variable LD_LIBRARY_PATH to /home/username/kde/usr/lib:/home/username/Qt/6.6.0/gcc_64/lib Setting environment variable CMAKE_PREFIX_PATH to /home/username/Qt/6.6.0/gcc_64:/home/username/kde/usr Setting environment variable QT_PLUGIN_PATH to /home/username/kde/usr/lib64/plugins:/home/username/kde/usr/lib/plugins
In the "Welcome to CLion" wizard > "Open" > "/home/username/kde/src/kcalc/CMakeLists.txt" > OK. The dialog "Open Project CMakeLists.txt is a project file. Would you like to open the project?" is shown, select "Open as Project". Enable check box "Trust projects in ~/kde/src" > "Trust Project" button. In the "Open Project Wizard" dialog select "OK".
Look at the the part that you have written down from the output of kdesrc-build kcalc --debug
.
In Settings > Build, Execution, Deployment select the "Debug" CMake "Profile". "Generator:" "Let CMake decide", "Build directory:" "/home/username/kde/build/kcalc".
CMake options:
-G "Unix Makefiles" -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=ON -DCMAKE_BUILD_TYPE=Debug -DBUILD_WITH_QT6=ON -DCMAKE_CXX_FLAGS:STRING=-pipe -DCMAKE_INSTALL_PREFIX=/home/username/kde/usr -DCMAKE_PREFIX_PATH=/home/username/Qt/6.6.0/gcc_64
From the text above, prepare the variables and value definitions like this:
XDG_DATA_DIRS=/home/username/kde/usr/share:/usr/share/plasma:/usr/local/share:/usr/share:/var/lib/snapd/desktop
PATH=/home/username/kde/usr/bin:/home/username/Qt/6.6.0/gcc_64/bin:/home/username/.local/bin:/home/username/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
CMAKE_MODULE_PATH=/home/username/Qt/6.6.0/gcc_64/lib/cmake:/home/username/kde/usr/lib64/cmake:/home/username/kde/usr/lib/cmake
PKG_CONFIG_PATH=/home/username/kde/usr/lib/pkgconfig:/home/username/Qt/6.6.0/gcc_64/lib/pkgconfig
LD_LIBRARY_PATH=/home/username/kde/usr/lib:/home/username/Qt/6.6.0/gcc_64/lib
CMAKE_PREFIX_PATH=/home/username/Qt/6.6.0/gcc_64:/home/username/kde/usr
QT_PLUGIN_PATH=/home/username/kde/usr/lib64/plugins:/home/username/kde/usr/lib/plugins
Select the text block above and in "Environment:" click on the button with the tooltip "Paste". Press "OK" button.
rm -rf ~/kde/build/kcalc
In the bottom left select the button with the tooltip CMake, this will open the CMake tool window. Press the Clear All button, press the "Reload CMake Project" button. Make sure that the output is correct. From the CLion main menu > Build > Rebuild "kcalc".
From the CLion main menu > Run > Edit Configurations... > kcalc > Environment variables: > use the button with the tooltip "Paste" to paste the same text block as above in the "Settings > Build, Execution, Deployment" >"Environment:".
Now you can run kcalc correctly, from the CLion main menu > Run > Run 'kcalc' Shift + F10.
Now you can debug kcalc correctly, from the CLion main menu > Run > Debug 'kcalc' Shift + F9.
If CLion starts the process kcalc (for running or for debugging), you can make sure that the process was started correctly. In Clion > in the bottom left button "Debug Alt + 5" > tab "GDB" > run the command info proc
. It says:
(gdb) info proc process 89954 cmdline = '/home/username/kde/build/kcalc/bin/kcalc' cwd = '/home/username/kde/build/kcalc/bin' exe = '/home/username/kde/build/kcalc/bin/kcalc'
In a terminal:
xargs -0 printf %s\\n < /proc/89954/environ
The value of the environment variables should be the same as in part that you have written down from the output of kdesrc-build kcalc --debug
.