On Windows, CLion toolchains include the build tool, C and C++ compilers, debugger executable, and the environment. You can select one of the pre-defined toolchain setups (MinGW, Cygwin, Microsoft Visual C++, or WSL), Remote Host, Docker) or configure a custom toolchain (System):
Watch this video for an overview of Windows toolchain options:
For details on Remote Host toolchains, see Remote with local sources. If you are working with a Docker container, see Docker toolchain.
MinGW
CLion bundles a version of the MinGW toolset for quick setup. The exact version bundled is MinGW-w64 9.0 with languages=c,c++
, posix
threads, and seh
exceptions. You can use this bundled toolchain or switch to a custom MinGW installation.
Install MinGW (optional)
-
Download and run the MinGW-w64 installer. It provides both 64- and 32-bit options.
-
In the MinGW-w64 installation wizard, make sure to select the required architecture. Note that the default suggested option is 32-bit.
-
Wait for installation to finish.
Although MinGW-w64 provides both 64- and 32-bit options, you can also install MinGW, the 32-bit-only version.
-
In the MinGW installation wizard, select the following packages from the Basic Setup list: mingw-developer-tool, mingw32-base, mingw32-gcc-g++, mingw32-msys-base.
-
Wait for installation to finish.
Configure a MinGW toolchain
-
Go to .
Click
and select MinGW to add a new MinGW toolchain.
-
In the Toolset field, you will see Bundled MinGW, which is the default option. If required, open the field to select from the list of other available installations:
-
Wait until the tools detection finishes.
-
Select the Debugger: you can use either bundled GDB, your MinGW GDB, or a custom GDB binary.
The recommended option is bundled GDB, since it is guaranteed to include Python support required for CLion data renderers.
-
If required, specify the script to initialize the environment.
-
Click Apply when all the tools are set correctly.
Cygwin
-
Download the Cygwin installer, version 2.8 or later.
-
Run the installer and select the following packages:
-
gcc-g++
-
gdb
To select a package, type its name in the Search field and set the version in the New column:
-
-
Once the installation is finished, open CLion and go to .
-
Click
and select Cygwin to add a new Cygwin toolchain.
CLion will attempt to detect the Cygwin installation automatically. Check the Toolset field, and specify the path manually if required.
-
Wait until the tools detection finishes, and click Apply.
-
If required, specify the script to initialize the environment.
Windows Subsystem for Linux
You can use WSL, Windows Subsystem for Linux, as your working environment in CLion on Windows 10 (starting the Fall Creators Update version 1709, build 16299.15).
WSL toolchain enables you to build projects using CMake and compilers from Linux and run/debug on WSL without leavCLionLion running on your Windows machine.
Microsoft Visual C++
-
Install Visual Studio 2013, 2015, 2017, 2019, or 2022 on your system.
-
In CLion, go to .
-
Click
and select Visual Studio from the list of toolchain templates.
-
Check the Toolset field. CLion will attempt to automatically detect the installed Visual Studio distribution. If the detection fails, set the path to Visual Studio manually.
-
If required, specify the Architecture (x86, amd64, x86_arm, or another), Platform (store, uwp, onecore, or leave it blank), and Version. To build your project for the selected architecture, CLion will call the script to configure the environment with the specified parameters.
-
Wait until the tools detection is finished:
-
If required, specify the script to initialize the environment.
MSVC compiler
CLion supports the Microsoft Visual C++ compiler that ships with Visual Studio 2013, 2015, 2017, 2019, and 2022.
For the case when your code includes MSVC extensions, CLion provides the support for:
-
__uuidof
,__forceinline
,__unaligned
, and__alignof
keywords; -
pointer type attributes:
__ptr32
,__ptr64
,__uptr
,__sptr
; -
MSVC built-in data types:
(unsigned) __int8
,(unsigned) __int16
,(unsigned) __int32
,(unsigned) __int64
,__wchar_t
; -
additional format specifiers, such as
%I32
and%I64
; -
the clang’s
-fms-extensions
flag.
Clang-cl compiler
As an alternative compiler, you can use clang-cl — the MSVC-compatible compiler driver for Clang. CLion supports clang-cl version 8.0 and later.
-
Install clang-cl from the LLVM site or along with the Visual Studio tools.
When installed from the LLVM site, the clang-cl binary can be found at the standard location C:Program FilesLLVMbinclang-cl.exe for the 64-bit version or C:Program Files (x86)LLVMbinclang-cl.exe for the 32-bit version.
-
In CLion, go to and select the Visual Studio toolchain that you want to configure, or create a new one.
-
Point the C Compiler and C++ Compiler fields to clang-cl.exe. CLion will suggest the paths detected automatically.
Note that currently the -T clangcl
options can’t be picked up if the bundled CMake is in use along with the Visual Studio toolchain setup (CPP-18848).
MSVC debugger
The MSVC toolchain debugger is implemented on top of LLDB, and it can work with native visualizers from the Visual Studio installation or from your project.
To enable native visualizers support and set the desired diagnostics level, select the Enable NatVis renderers for LLDB checkbox in :
CLion automatically generates one-line summaries for all structures not covered by Natvis and highlights them to increase readability. Also, the built-in formatters provide visualization for wide/Unicode strings (wchar_t
, char16_t
, char32_t
).
If you have custom native visualizers in your project, CLion will use them as well.
CLion supports most of the Natvis customization features, such as ArrayItems, IndexListItems, LinkedListItems, TreeItems, Inheritable attribute, Format specifiers, and CustomListItems.
When using the MSVC toolchain debugger, you can enable symbol servers support which will help the debugger resolve library symbols correctly. For more details, refer to Using symbol servers when debugging on Windows.
System toolchain
The System toolchain on Windows allows configuring the build tool, compilers, and debugger without selecting a predefined toolset or environment, similarly to Linux and macOS. Use this toolchain option for embedded development cases like using ARM or for other custom setups.
-
Go to .
-
Click
and select System to add a new System toolchain.
-
Configure the tools and provide an environment script if required:
Initializing the toolchain environment via a script
Instead of setting the environment manually, you can point CLion to an environment file — a script that initializes the environment for your project. This is helpful, for example, when you need to initialize compiler variables, add custom ones, or modify the PATH
.
Specifying an environment script is available for all toolchains.
Environment sourcing will happen on the first actual usage of the toolchain in a CMake profile or upon loading a Makefile project.
-
In the toolchain settings, click Add environment, then click From file:
-
In the Environment file field, specify the path to the script:
-
You will get notifications in case of script loading issues. CLion also checks the script loading time and terminates the execution if it takes too long.
Clang compiler on Windows
With CMake 3.15, it has become possible to use the Clang compiler on Windows with the MinGW-w64/MinGW toolchain.
However, the LLVM Clang for Windows is built using Microsoft Visual Studio, and all the built-in macros and include search paths are set up for use with Visual Studio. So if you take Clang from the LLVM repository, it will not work correctly when configured with the MinGW toolchain. One of the possible workarounds is described below.
Set up the Clang compiler for MinGW
-
Install MSYS2.
-
Download the following packages with the pacman tool (use the
pacman -S package_name
command):-
mingw-w64-x86_64-gcc
-
mingw-w64-x86_64-clang
-
mingw-w64-x86_64-lld
-
mingw-w64-x86_64-gdb
-
mingw-w64-x86_64-polly
-
mingw-w64-x86_64-compiler-rt
This way, you will get the Clang compiler which is built with mingw-w64 and has paths and macros that correspond to this toolchain.
-
-
Go to , create a MinGW toolchain, and set up the tools from MSYS.
After specifying the Toolset, check the automatically detected tools and make sure to switch to Clang in the C Compiler and C++ Compiler fields.
GDB on Windows
In the case of MinGW, CLion includes the bundled GDB (version 12.1). For Cygwin, you need to install the GDB package in the Cygwin Package Manager, as described in the Cygwin section of this guide.
You can also switch to a custom GDB binary. In this case, the supported GDB versions are 7.8.x-12.1.
Note that for GDB 8.0 and later, debugger output is redirected to CLion console by default. To enable opening an external console window for application input/output, go to Help | Find Action or press Ctrl+Shift+A, search for Registry, and set the following key: cidr.debugger.gdb.workaround.windows.forceExternalConsole.
Last modified: 11 January 2023
I ran into the same issue with CLion 1.2.1 (at the time of writing this answer) after updating Windows 10. It was working fine before I had updated my OS. My OS is installed in C: drive and CLion 1.2.1 and Cygwin (64-bit) are installed in D: drive.
The issue seems to be with CMake. I am using Cygwin. Below is the short answer with steps I used to fix the issue.
SHORT ANSWER (should be similar for MinGW too but I haven’t tried it):
- Install Cygwin with GCC, G++, GDB and CMake (the required versions)
- Add full path to Cygwin ‘bin’ directory to Windows Environment variables
- Restart CLion and check ‘Settings’ -> ‘Build, Execution, Deployment’ to make sure CLion has picked up the right versions of Cygwin, make and gdb
- Check the project configuration (‘Run’ -> ‘Edit configuration’) to make sure your project name appears there and you can select options in ‘Target’, ‘Configuration’ and ‘Executable’ fields.
- Build and then Run
- Enjoy
LONG ANSWER:
Below are the detailed steps that solved this issue for me:
-
Uninstall/delete the previous version of Cygwin (MinGW in your case)
-
Make sure that CLion is up-to-date
-
Run Cygwin setup (x64 for my 64-bit OS)
-
Install at least the following packages for Cygwin:
gcc
g++
make
Cmake
gdb
Make sure you are installing the correct versions of the above packages that CLion requires. You can find the required version numbers at CLion’s Quick Start section (I cannot post more than 2 links until I have more reputation points). -
Next, you need to add Cygwin (or MinGW) to your Windows Environment Variable called ‘Path’. You can Google how to find environment variables for your version of Windows
[On Win 10, right-click on ‘This PC’ and select Properties -> Advanced system settings -> Environment variables… -> under ‘System Variables’ -> find ‘Path’ -> click ‘Edit’]
-
Add the ‘bin’ folder to the Path variable. For Cygwin, I added:
D:cygwin64bin
-
Start CLion and go to ‘Settings’ either from the ‘Welcome Screen’ or from File -> Settings
-
Select ‘Build, Execution, Deployment’ and then click on ‘Toolchains’
-
Your ‘Environment’ should show the correct path to your Cygwin installation directory (or MinGW)
-
For ‘CMake executable’, select ‘Use bundled CMake x.x.x’ (3.3.2 in my case at the time of writing this answer)
-
‘Debugger’ shown to me says ‘Cygwin GDB GNU gdb (GDB) 7.8’ [too many gdb’s in that line ;-)]
-
Below that it should show a checkmark for all the categories and should also show the correct path to ‘make’, ‘C compiler’ and ‘C++ compiler’
See screenshot:
Check all paths to the compiler, make and gdb
- Now go to ‘Run’ -> ‘Edit configuration’. You should see your project name in the left-side panel and the configurations on the right side
See screenshot:
Check the configuration to run the project
-
There should be no errors in the console window. You will see that the ‘Run’ -> ‘Build’ option is now active
-
Build your project and then run the project. You should see the output in the terminal window
Установка и настройка Clion
Каталог статей
- Введение
- Два, инструменты
- Три, установка и активация
- Четыре, горячие клавиши
- 5. Создайте проект и программу отладки.
- Шесть, скомпилируйте несколько файлов
- Семь, конец
Введение
Я не знаю, с какими артефактами разработки контактировали мои друзья. По сравнению с компиляторами, с которыми я сейчас общаюсь, существует множество компиляторов, таких как DEV C ++, EditPlus, Eclipse, Pycharm, Vistual Stdio, Vistual Code. Для программистов, разрабатывающих C / C ++, один Хороший компилятор — это мощный инструмент для начала вашего эффективного обучения и работы.Установка хорошего компилятора может сделать вашу разработку более эффективной.
Сегодня я рекомендую очень хорошую IDE разработчикам C / C ++, то есть CLion, недавно выпущенный Jetbrains (Чешская Республика) для разработки C / C ++. Разработанная кроссплатформенная среда IDE основана на IntelliJ, а также содержит множество интеллектуальных функций для повышения продуктивности разработчиков и повышения эффективности их работы. Кроме того, JetBrains имеет множество отличных IDE, таких как упомянутый выше Pycharm, который очень подходит для разработки. Далее я объясню методы установки и настройки, а также использование сочетаний клавиш.
Два, инструменты
Адрес загрузки Clion:кликните сюда
Три, установка и активация
-
Дважды щелкните исполняемый файл после загрузки, появится следующий интерфейс
-
После завершения распаковки войдите в приветственный интерфейс.
-
Выберите путь установки, нажмите Далее (PS: постарайтесь не выбирать установку под файлом диска C)
-
В это время выберите три верхних и нижнюю панель, пожалуйста, выберите нужный вам элемент. После выбора щелкните Далее.
-
Тогда просто подожди
-
Дождавшись запроса о завершении установки, нажмите Finsh, появится следующий интерфейс.
-
После завершения установки на рабочем столе появится ярлык Clion, нажмите, чтобы войти
-
Нажмите кнопку Enter (посередине), а затем вставьте ключ ниже, чтобы войти в CLion.
Здесь вам необходимо получить ключ активации, и это рекомендуется тем, кто может купить законные авторские права!
Лицензию IntelliJ IDEA можно получить следующими способами:
1. Получить через студенческий билет, идентификатор учителя или почтовый ящик edu;
2. Вы также можете подать заявку через собственный проект с открытым исходным кодом;
3. У продукта есть 30-дневный пробный период, вы можете сначала попробовать его, а затем выбрать, нужно ли вам его покупать.
Конкретные сведения: вы можете посетить официальный веб-сайт приложения. https://www.jetbrains.com/idea/buy/
В-третьих, установите отладчик компилятора
-
После завершения активации наиболее важным шагом является то, что на компьютере не установлен отладчик компилятора CMake / MinGW.Если компилятор DEV C ++ был установлен, вы можете совместно использовать отладчик компилятора MinGW.
-
Щелкните Файл, затем выберите Настройки, появится следующий интерфейс.
-
Выберите Toolchains в разделе Build, Execution, Deployment, а затем выберите Environment справа.
-
Выберите файл MinGW под файлом DEV C ++, и настройка выполнена успешно!
Четыре, горячие клавиши
Ctrl + влево стрелка влево назад
Ctrl + вправо стрелка вправо вперед
ALT + 1 Показать и скрыть панель проекта
Ctrl + / Добавить или удалить заметки
Ctrl + Alt + Код формата L
Alt + F7 Find Usages
Ctrl + R заменить
Ctrl + B Переход от определения к объявлению
Ctrl + Shift + Возврат к месту последнего редактирования
Ctrl + N класс поиска
Ctrl + O выберите метод, который нужно переписать
Ctrl + F12 Быстро просмотреть участников класса
Ctrl + Q Быстрый просмотр документа
Ctrl + Информация о параметрах подсказки P
Ctrl + H Просмотр дерева наследования
Ctrl + E Просмотр недавно просмотренных файлов
Ctrl + Alt + B Просмотр классов реализации интерфейсов и абстрактных классов
Ctrl + F Поиск в текущем файле Примечание:Нажмите Esc, и поле поиска исчезнет.
Ctrl + Shift + F Поиск по всему проекту или в указанном каталоге Примечание:Дважды нажмите Esc, и поле поиска исчезнет.
Ctrl + Shift + N Найти файлы
Ctrl + F7 Найдите место, где в тексте используются класс, переменная, функция и т. Д.
Shift + Сдвиг глобального поиска
Ctrl + Alt + 7 Просмотр того, где используются классы, объекты и переменные
Ctrl + Alt + -/+ Развернуть и свернуть текущую функцию и класс
Ctrl + Shift + -/+ Развернуть и свернуть все функции и классы
Shift + F6 Переименовать переменную
Alt + insert Добавить информацию об автоматической генерации кода (вставить набор*()/get*()/Конструктор, равно, хэш-код и т. Д.)
Ctrl + Shift + космическая подсказка (newЗатем напрямую войдите в конструктор и предоставьте информацию о конструкции в конструкторе)
5. Создайте проект и программу отладки.
- Создать пустой проект
- Выберите место хранения и языковой стандарт проекта и действуйте в соответствии с рисунком.Первый шаг — выбрать тип создаваемого проекта — C или C ++, второй шаг — выбрать языковой стандарт, третий шаг — выбрать место хранения файла, а четвертый шаг — щелкнуть Создайте.
- Когда файл проекта создается так
- Напишите простую программу и отлаживайте ее. Добавляем в программу точку останова, выбираем DEBUG
- Если вы хотите создать несколько исходных файлов в одном файле проекта, вам необходимо изменить имя исходного файла и изменить информацию в CMakeLists (выберите исходный файл, нажмите Refactor, а затем выберите Rename)
Примечание: не называйте исходный файл на китайском языке.
Шесть, скомпилируйте несколько файлов
Добавьте несколько исходных файлов в проект. Как мы все знаем, в проекте разрешена только одна основная функция. Если основных функций несколько, функция не будет запущена, и будет сообщено об ошибке. Итак, что нам делать, чтобы создать несколько исходных файлов для компиляции и отладки в рамках проекта?
- Щелкните Project, выберите New, а затем выберите C / C ++ Source File.
- Выберите имя и тип исходного файла, нажмите ОК.
- На этом этапе вновь созданный исходный файл предложит
- Откройте файл CMakeLists и добавьте информацию о компиляции
Первым шагом является добавление скомпилированного проекта. Вам не нужно добавлять созданный проект Project. Вы можете изменить его. Ниже приведен только что созданный исходный файл.
Второй шаг — нажать «Обновить изменения», и изменения будут успешными! !
- Отредактируйте второй файл программы!
Семь, конец
На этом мы завершили всю настройку, и следующая работа по разработке остается за вами! Посыпать ~
Index
- Index
- CLion Installation
- Setup Windows Subsystem for Linux (WSL)
- Package installation
- Configure CLion
- Version 2021 and newer
- Version 2019
- Setup Valgrind on CLion
- Redirect Input from file on CLion
- Setup WSL Terminal on CLion
- Setup WSL Xserver [Optional]
- Troubleshooting GUI errors
CLion Installation
Create an educational account using your university email:
https://www.jetbrains.com/shop/eform/students
Download, install and login into CLion.
Setup Windows Subsystem for Linux (WSL)
⚠️ IMPORTANT — If you have Windows 11 installed you don’t need to follow these steps below nor the installation of an X-Server.
Running wsl –install in a Powershell terminal and setting up an UNIX username like the steps below is sufficient to have a working environment.
Open Windows Powershell in Admin mode by using Win+X shortcut and use the following command (In this guide we will install WSL version 1, this saves us a lot of troubleshooting. Feel free to try version WSL 2 if you like it)
1 |
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart |
Reboot your system
Choose your preferred distro (I suggest using Ubuntu because most of packages are updated and accessible, if you want a lightweight heavy distro use Debian) and download it from Microsoft Store.
Once installed, open it by searching it in Start Menu.
Create a UNIX user with a password (You need it later so choose one you can actually remember).
Update the distro with:
1 |
sudo apt update && sudo apt upgrade -y |
Package installation
Install packages with this command:
1 |
sudo apt install -y build-essential cmake gdb valgrind wget kcachegrind |
Configure CLion
Create a SSH profile with the following command (this assures that CLion connects to WSL):
1 |
wget https://raw.githubusercontent.com/JetBrains/clion-wsl/master/ubuntu_setup_env.sh && bash ubuntu_setup_env.sh |
Open CLion, go to File>Settings>Build, Execution, Deployment>Toolchains
, click on +
and choose WSL.
Version 2021 and newer
It should detect automatically your WSL distro and version like the following screenshot:
Version 2019
Go to credentials, open the menu and configure a new connection:
-
host: localhost,
-
username: WSL username previously created,
-
port: 2222,
-
authentication type: WSL password previously created.
Test the connection with the related button.
If CLion is connected correctly it should automatically detect all the paths, otherwise you can set them manually (they are located under /usr/bin
)
Setup Valgrind on CLion
Go to File>Settings
, search for Valgrind, set valgrind path (/usr/bin/valgrind
) and all its arguments (view the FAQ guide).
Now you can run your program with Valgrind by clicking on the top right icon (I use Atom Material Icons plugin which I strongly recommend:
https://plugins.jetbrains.com/plugin/10044-atom-material-icons.
Redirect Input from file on CLion
Under Edit Configurations
inthe top right corner you can change to redirect the input from file like the following images
Setup WSL Terminal on CLion
If you want to run CLI commands directly into the project directory you can use the built-in terminal in CLion.
Go to File>Seetings>Tools>Terminal
, under Shell Path
you should already see the WSL terminal unless type the following :
1 |
wsl.exe |
or this if you have multiple distros installed:
1 |
wsl.exe --distribution <distroName> |
Setup WSL Xserver [Optional]
If you want to run kcachegrind, massif-visualizer or any Linux app with a GUI follow the next steps.
Open WSL, modify your .bashrc
(nano ~/.bashrc
) file and append this line at the end of the file:
1 |
export DISPLAY=:0 |
This will forward your Linux GUI to the Xserver (installed later).
Download and install VcXsrv Xserver (any other Xserver is fine, I just prefer this one): https://sourceforge.net/projects/vcxsrv/files/latest/download
Launch it and choose Multiple windows (just continue, all the other options are not relevant for our purpose) and then press Finish.
You should see in the bottom right on the taskbar the Xserver icon indicating it’s active.
NOTE
Remember to run XLaunch after every reboot to use it again
Troubleshooting GUI errors
cannot open shared object file: No such file or directory...
If you encounter the following error:
1 |
failed: libQt5Core.so.5: cannot open shared object file: No such file or directory |
while running kcachegrind, fix it by executing the following commands:
1 |
sudo apt install -y binutils |
Could not load the Qt platform plugin "xcb" in ""...
If you encounter the following error:
1 |
qt.qpa.xcb: could not connect to display :0 |
Congratulations 🎉 you have installed WSL2! (naughty user, you have not followed my guide 😠!).
Replace the previous export with:
1 |
export DISPLAY=$(route.exe print | grep 0.0.0.0 | head -1 | awk '{print $4}'):0.0 |
If it does not work follow this guide (Firewall section only): 📖.
Перед примером моей настройки немного лирики.
Давно хотел попробовать себя в микроконтроллерах, вернее были идеи с их использованием, которые очень хотелось реализовать. Сначала начал с PIC32 — огонь контроллеры. Так получалось, что поначалу и коротил их порты, и с питанием завышал — неубиваемые (не совсем конечно, порт правда однажды сгорел, но сам контроллер продолжал работу). IDE MplabX неплоха, подкупал графический блок с отображением занимаемой RAM/Flash на выбранном МК — удобно, но сам NetBeans как IDE это жесть, ну не удобно ни разу после Idea. Но проблема была не в этом — как потом оказалось, PIC’и тяжело достать, мало кто их возит, а если и возит, то по относительно высокой цене.
Дальше решил копнуть в сторону STM32 — они в больших количествах, за базовую периферию просят не много, но главное — это доставаемость. (Но кодогенератор STM’а хуже Microchip’a — весь файл загажен комментами и функциями, это конечно сильно огорчило. У Microchip’а все сгенеренные функции вынесены в отдельные файлы и main.c практически чист — прелесть).
(UPD: вот тут признаюсь ошибался, спасибо golf2109, он подсказал, что от заваливания комментами и функциями файла main.c можно избавиться, достаточно включить в настройках опцию для вынесения сгенерированного кода в отдельные файлы, но я все же в недоумении, почему это не дефолтная настройка, вроде логично было бы)
Теперь об IDE для STM32.
Попробовал хваленый Keil — конечно получше блокнота, но ужасно не удобный (ни нормальных подсказок, ни нормального форматирования, после Idea в общем не то пальто, особенно я так и не понял как создавать пакеты, почему нельзя просто в окошке ткнуть создать пакет и продолжить — матюгаться хочется).
Потом попробовал CooCox — гораздо лучше и приятнее интерфейс, хорошо настраивается форматирование (прям порадовала настройка переноса параметров в методах, да и другие настройки очень кстати), но опять же не хватало многих плюшек от Idea и опять же проблемы с организацией пакетов.
Clion почти та же Idea только для C/C++ и сразу захотелось ее прикрутить, но как оказалось довольно проблематично (особенно для человека, который с плюсами-то не силен, особенно со всякими сборщиками и компиляторами, парой сотен опций компиляции). Начал с блога JetBrains. Довольно подробно описано, но это для прошлых версий STM32CubeMX, в новой немного поменялась структура каталогов, в результате чего я некоторое время не понимал почему не компилится. Потом разобрался — изменил пути, для cortex-m3 убрал параметры -mfpu. Но опять не компилился. Дальше оказалось, что я не тот компилятор установил, вернее просто скачал его, но не указал путь к нему в файле сборки (ну сложновато поздно вечером думать).
Главное в Clion’е поставить галочку в настройках ‘Automaticaly Reload Cmake Project on Edit’ (Settings -> Build, Execution, Deployment -> Cmake), тогда после правок не нужно ничего очищать вручную.
Еще из изменений — дебаггер, упомянутый в блоге, переименовали в Ozone, его еще не тестил, позже отпишусь.
И последняя проблема, сверлившая мозг. Очень хотелось ООП, но не компилился проект если я добавлял C++ файл, куча ошибок с не найденными функциями (например, _exit, _sbrk и пр.). Здесь проблем было 2:
- в файле CMakeLists.txt в блоге JetBrains не был выставлен флаг CXX в директиве project (нужен для файлов C++)
- для исправления ошибок в файле из блога не хватало опций -specs=nosys.specs -specs=nano.specs после опции -gc-sections. Они как раз создают эти прототипы или наоборот игнорят эти методы (тут не могу точно сказать)
После этого проект нормально стал компилиться и размер его стал в пределах нормы (без опции -specs=nano.specs размер был в 10 раз больше для пустого проекта примерно 110 кб., с опцией — 18 кб.)
Итак, что я сделал:
- ставим Clion
- заходим в настройки (Settings -> Build, Execution, Deployment -> Cmake) и ставим галочку ‘Automaticaly Reload Cmake Project on Edit’
- здесь же вписываем в поле Cmake options параметр -DCMAKE_TOOLCHAIN_FILE=STM32L1xx.cmake и в поле Generation path ставим build (если поменять, то в файлах CMakeLists.txt и STM32L1xx.cmake нужно его тоже будет поменять)
- ставим ARM компилятор (здесь брал)
- импортируем проект (который предварительно сгенерировали в STM32CubeMx), говорим, что можно создать CMakeLists.txt
- отсюда или из моего репозитория копируем содержимое CMakeLists.txt в созданный в Clion’e и добавляем файл STM32L1xx.cmake (можно обозвать как угодно)
- в STM32L1xx.cmake правим имя проекта в директиве project и можно убрать CXX если не нужен C++
- заменить в файле CMakeLists.txt в директиве add_definitions(-DSTM32L100xC) на свой контроллер
- для надежности можно сделать: Tools -> Cmake -> Reset Cache and Reload project и потом Tools -> Cmake -> Reload Cmake Project
- теперь можно сбилдить
Файл CMakeLists.txt
project(Skeleton C CXX ASM)
cmake_minimum_required(VERSION 3.5.0)
add_definitions(-DSTM32L100xC)
set(FREERTOS_DIR Middlewares/Third_Party/FreeRTOS/Source/)
file(GLOB_RECURSE USER_SOURCES "Src/*.c")
file(GLOB_RECURSE HAL_SOURCES "Drivers/STM32L1xx_HAL_Driver/Src/*.c")
file(
GLOB_RECURSE
FREERTOS_SOURCES
"${FREERTOS_DIR}/*.c"
"${FREERTOS_DIR}/CMSIS_RTOS/*.c"
"${FREERTOS_DIR}/portable/GCC/ARM_CM3/*.c"
)
add_library(
CMSIS
Src/system_stm32l1xx.c
startup/startup_stm32l100xc.s
)
include_directories(Inc)
include_directories(Src/gps/parser/nmea)
include_directories(Drivers/STM32L1xx_HAL_Driver/Inc)
include_directories(Drivers/CMSIS/Include)
include_directories(Drivers/CMSIS/Device/ST/STM32L1xx/Include)
include_directories(${FREERTOS_DIR})
include_directories(${FREERTOS_DIR}/CMSIS_RTOS)
include_directories(${FREERTOS_DIR}/include)
include_directories(${FREERTOS_DIR}/portable/GCC/ARM_CM3/)
include_directories(${FREERTOS_DIR}/portable/GCC/MemMang)
add_executable(${PROJECT_NAME}.elf ${USER_SOURCES} ${HAL_SOURCES} ${LINKER_SCRIPT} ${FREERTOS_SOURCES})
target_link_libraries(${PROJECT_NAME}.elf CMSIS)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Map=${PROJECT_SOURCE_DIR}/build/${PROJECT_NAME}.map")
set(HEX_FILE ${PROJECT_SOURCE_DIR}/build/${PROJECT_NAME}.hex)
set(BIN_FILE ${PROJECT_SOURCE_DIR}/build/${PROJECT_NAME}.bin)
add_custom_command(TARGET ${PROJECT_NAME}.elf POST_BUILD
COMMAND ${CMAKE_OBJCOPY} -Oihex $<TARGET_FILE:${PROJECT_NAME}.elf> ${HEX_FILE}
COMMAND ${CMAKE_OBJCOPY} -Obinary $<TARGET_FILE:${PROJECT_NAME}.elf> ${BIN_FILE}
COMMENT "Building ${HEX_FILE} nBuilding ${BIN_FILE}")
Файл STM32L1xx.cmake:
INCLUDE(CMakeForceCompiler)
SET(CMAKE_SYSTEM_NAME Generic)
SET(CMAKE_SYSTEM_VERSION 1)
# Specify the cross compiler. arm-none-eabi-gcc and arm-none-eabi-g++ are full path required
CMAKE_FORCE_C_COMPILER(arm-none-eabi-gcc GNU)
CMAKE_FORCE_CXX_COMPILER(arm-none-eabi-g++ GNU)
SET(LINKER_SCRIPT ${PROJECT_SOURCE_DIR}/STM32L100RCTx_FLASH.ld)
SET(COMMON_FLAGS "-mcpu=cortex-m3 -O2 -mthumb -ffunction-sections -fdata-sections -g -fno-common -fmessage-length=0")
SET(CMAKE_CXX_FLAGS_INIT "${COMMON_FLAGS} -std=c++11")
SET(CMAKE_C_FLAGS_INIT "${COMMON_FLAGS} -std=gnu99")
SET(CMAKE_EXE_LINKER_FLAGS_INIT "-Wl,-gc-sections -specs=nosys.specs -specs=nano.specs -T ${LINKER_SCRIPT}")
Работать стало приятно, но пока заливаю прошивку через STM’овскую утилиту, позже попробую накрутить OZONE. На вопросы отвечу (если смогу).
CLion — это относительно новая IDE разработки и отладки кода на C/C++. Она основана на популярной платформе Intellij и наследует от нее большинство полезных функций, таких как:
- компилятор;
- анализ и отладка кода;
- выделение кода по тегам и операторам;
- автозаполнение команд;
- рефакторинг.
Релиз последней сборки произошел 17 марта 2021 года. CLion — это детище команды JetBrains. Запуск, отладка и сам компилятор в CLion работают куда шустрее, чем во многих подобных рабочих средах.
Обзор IDE CLion
При кодировании CLion позволяет вам вообще забыть о рутине. Компилятор и отладка кода в CLion просто на высоте. Вы можете четко сконцентрироваться только на важном, а все остальное этот редактор возьмет на себя. Данная IDE способна повысить вашу производительность за счет «умного» и своевременного автозавершения кода, мгновенной навигации по документу и надежного рефакторинга.
Преимущества CLion перед другими IDE
- Легкий старт. В данной IDE очень легко начать новый проект, файлы могут быть добавлены в проект одним щелчком мыши.
- Умный редактор. Благодаря своей умной среде, CLion анализирует ваш код, понимает ваш проект и старается увеличить вашу скорость написания кода за счет интеллектуального автозавершения.
- Навигация и поиск. Найти необходимый «кусок» кода не составит труда — мгновенная навигация по символу, классу или файлу в этом помогает.
- Генерация кода и рефакторинг. CLion экономит вам время за счет генерации кода — от геттеров/сеттеров до более сложных шаблонов.
- Анализ кода на лету. У вас есть возможность писать красивый и правильный код. Данная IDE «на лету» проводит статический анализ вашего кода для поддерживаемых языков, поэтому она способна сразу показывать вам предупреждения и ошибки.
- Настройка редактора. Гибкая система настройки CLion позволяет выбирать тему редактора, раскладку клавиатуры и др. В общем, позволяет вам полностью настроить CLion под себя.
- Запуск и отладка CLion. Вы можете запускать и отлаживать свою программу как локально, так и удаленно.
- Динамический анализ. Если использовать интеграцию с Valgrid Memcheck, Google Sanitizerz и CPU Profiler, то можно легко обнаружить ошибки в памяти, скачки данных и любую другую проблему, также можно с легкостью отслеживать производительность вашей программы.
- Поддержка CMake. CMake — это кроссплатформенная система сборки, которая широко используется для проектов С и С++.
- Модульное тестирование. CLion поддерживает платформы Google Test, Boost.Test и Catch. Также он имеет встроенный инструмент для запуска тестов.
- Документация по коду. В CLion легко документировать свой код. Доступен предварительный просмотр документов в стиле Doxygen во всплывающем окне.
- Встроенная разработка. В CLion вы легко можете разрабатывать для микроконтроллеров, используя различные возможности отладки.
- Интеграция VCS. Данная IDE предоставляет унифицированный интерфейс для большинства популярных VCS, таких как Git, GitHub, CVS, Perforce и другие.
- Удобный терминал. Вы легко можете получить доступ к командной строке через встроенный терминал, можете включить режим эмуляции Vim, можете расширить функциональность среды и другими плагинами.
Как настроить IDE CLion?
Скачать актуальную версию можно на сайте jetbrains.com. Коротко расскажем, как настроить CLion под себя. В целом настройку рабочей среды можно разделить на несколько частей:
- Тема редактора. В настройках редактора есть возможность выбрать между светлой и темной темой оформления. Разработчикам с дальтонизмом можно попробовать параметр «Корректировать цвета красно-зеленого дефицита».
- Цвета и шрифты. Не стесняйтесь использовать настройки на полную. Вы свободно можете настроить макет цветов, шрифтов и синтаксиса, выделения ошибок, отладчика и т.д. Можете использовать предустановленные схемы цветов или создать с нуля свои.
- Комбинации клавиш. IDE CLion по умолчанию предоставляет комбинации клавиш почти для каждой функции. Вы можете выбрать из списка подготовленных схем комбинаций или создать свои.
- Фон редактора. Вы можете оживить редактор этой рабочей среды, установив любое фоновое изображение.
- Лигатуры. Если вам нравятся шрифты с лигатурами — используйте их.
- Семантическое выделение. Возможно, вам будет полезным способность настроить выделение каждой переменной или параметра своим цветом.
Запуск и отладка CLion
В зависимости от цели вашего проекта (CMake, Makefile, Gradle) CLion будет генерировать необходимую конфигурацию, которую можно будет запустить.
Запуск CLion
Условно весь запуск можно поделить на несколько частей:
- Шаблоны конфигурации. Чтобы сократить время, вы можете использовать шаблоны конфигурации для модульного тестирования, удаленной отладки, запуска обычного приложения и т.д.
- Конфигурация запуска. Вы можете изменять исполняемый файл любой конфигурации. При желании можете сделать конфигурацию «не рабочей».
- Конфигурация отладки. Для старта отладки нужно нажать «Shift+F9». Чтобы проверить состояние отладки, CLion предоставляет много полезных ярлыков.
Отладка CLion
CLion интегрируется с серверной частью GDB на всех платформах и с LLDB на macOS и Linux. Условно процесс отладки можно разделить на несколько частей:
- Присоединение к локальному процессу. CLion позволяет отлаживать процессы на локальном компьютере, запускаемые на самом ПК, а не через IDE.
- Удаленная отладка GDB. Если у вас есть один запущенный исполняемый файл на локальном ПК под gdbserver, вы можете подключиться к нему с другого компьютера при помощи GDB из CLion.
- Контрольные точки. При старте отладки данная IDE может проверить выполнение вашего кода. Вы можете выбрать из нескольких точек останова (точки останова на стоке, символические точки останова, точки останова на исключение).
- Точки выполнения. С помощью действия Set Execution Point to Cursor вы можете перемещаться вперед/назад в процессе выполнения отладки, вы можете прерывать или перезапускать циклы и др.
- Отладка root. CLion может запускать и отлаживать вашу программу с правами root, если вы выберете эту опцию.
CLion — это достаточно умная среда разработки. Функциональность всей IDE не уместить в одну статью, поэтому ее нужно пробовать. Настроить CLion просто, отладка происходит интуитивно, компилятор работает безупречно, общая функциональность этой IDEшки впечатляет. Что еще нужно для успешной разработки?
Как начать делать лабы по АЯ. Windows (и не только).
Введение.
Данный туториал написан для студентов МГТУ им Н. Э. Баумана и в частности для ИУ8 ради облегчения их нелёгкого пути по морям дискретной математики в лабораторных работах по Алгоритмическим языкам.
Перед тем, как мы начнём, хочу вас в последний раз предостеречь от выполнения лаб
под виндой. Линукс — то, с чем вам всё равно придётся подружиться рано или поздно.
И поверьте, на примере как своём, так и многих-многих тех, кто пытался что-то мудрить
со своей лицензионной виндушечкой, которая шла вместе с ноутом, а потому было слишком
тяжело с ней расставаться. Для таких моментов существует такая вещь как установка двух ОС
рядом, при таком раскладе вы просто выбираете нужную вам операционку при старте загрузчика grub:
В последний раз прошу вас рассмотреть этот вариант и не идти дальше и посмотреть в
сторону того же Ubuntu(годный дистрибутив для начинающих в линукс).
План действий.
- Установка CLion.
- Установка Github Desktop.
- CLion. Начало работы.
- Немного о сдаче лаб.
Как установить CLion и настроить Gtest
- Подать заявку на предоставление бесплатной лицензии, используя университетскую почту (P.S. если вы её до сих пор не получили, получите в ГЗ в 91 кабинете)
JetBrains Products for Learning
(То, что подчёркнуто красным нужно заполнить)
- Скачать CLion
- Установить CLion.
Установка стандартная, ничего дополнительно нажимать не требуется(только при желании это сделать)
-
Погдодовьте CLion к работе, настройте компилятор (Tutorial).
-
Далее нужно скачать Python
Установка стандартная, не требует дополнительных действий. Просто нажимаем далее, если спрашивают. Ничего не меняем
- И Git Bash
Установка стандартная, не требует дополнительных действий. Просто нажимаем далее, если спрашивают. Ничего не меняем
Заходим в папку с клонированным репозиторием в проводнике. Кликаем ПКМ и выбираем Git Bash Here
И выполняем эту команду.
git submodule update --init
Для Linux (Описано для Debian/Ubuntu и других систем, использующих apt)
sudo apt update sudo apt install git git clone <ссылка на ваш репозиторий>
Где взять ссылку показано на картинке
cd <название репозитория> git checkout -b wp/lab git submodule update --init
Ставим Github Desktop.
Если вы мало знакомы с командами гита, то эта программа с графическим интерфейсом поможет вам на
первом семестре. Чтобы клонировать репозитории и хранить их локально на своей машине, вносить изменения
на удалённый репозиторий и так далее.
-
Качаем, устанавливаем Github Desktop
-
Само собой логинимся через учётку github.
-
В Github Desktop:
File -> Clone repository
и выбираете нужный Вам репозиторий
-
ветка
master
— эталонная, своего рода шаблон для начала лабы. В неё мы не вносим изменения.
Чтобы начать делать лабу, нам нужно создать свою ветку (обычно её называютwp/lab
). Сделать это можно, нажав
New branch
в разделе с ветками. (смотри скрин ниже) -
Изменить ветку на
wp/lab
Начало в CLion
-
Запускаем CLion
-
Выбираем пункт New CMake Project from Sources или
File -> New CMake Project from Sources
- Выбираем папку с локальным репозиторием (обратите внимание, нужна именно папка, содержащая папку
.git
)
- Важно! Нажимаем Open Existing Project. Иначе CMakeLists.txt перезапишется
- Готово. Если делаете всё в первый раз на данной машине, то стоит немного подождать, пока Hunter(специальный пакетный менеджер) скачает и установит необходимые зависимости.
Начинаем работу c CLion и лабками.
Зачастую лабы суть лаб состоит в том, чтобы вы закодили то, что необходимо по заданию.
Делается это, как правило в директориях sourses/… — .cpp файлы и include/… — .hpp (подробнее на самих лабах)
Не вдаваясь в подробности, после того как всё сделано, ваш код проходит так называемые unit-тесты. Если интересно их содержание
можно посмотреть тут: /tests/test.cpp В общем и целом они нужны, чтобы подготовленные входные данные автоматически прогонялись через
ваше решения, а выходные данные, в свою очередь, проверялись на правильность. Плохим тоном является выгружать лабу на проверку удалённому
тестировщику TravisCI до того, как вы убедились, что тесты прошли локальную проверку у вас.
Давайте разбёремся, как запускать тестики на вашей машине.
Вот наше окно в CLion с какой-то открытой лабой.
Если вы видите ошибку
CMake Error at CMakeLists.txt:14 (include): include could not find load file: tools/gate/cmake/HunterGate.cmake
значит у вас не установлены необходимые подмодули. Чтобы это исправить, скопируйте и вставьте эти команды в терминал / git bash находясь в корне локального репозитория
git submodule update --init
или
git submodule add https://github.com/cpp-pm/polly tools/polly git submodule add https://github.com/cpp-pm/gate tools/gate
Немного пробежимся по среде разработки.
Слева мы наблюдаем всю файловую иерархию нашего проекта.
Снизу поле для вывода. Туда выводятся всевозможные ошибки CMake, а также там
мы будем видеть, как проходят наши тестики.
Ну по центру место, где будем писать код, с подсветкой синтаксиса, автодополнениями
и другим разработческим сахаром.
Итак, внимание в правый верхний угол. Если сборка вашего проекта прошла успешно (при условии что вы выполнили все пункты выше),
то у вас будет похожая картина.
Для того, чтобы запустить тестирование, нажимаем на зелёный треугольничек, и смотрим в окно вывода:
Если вы видете подобное(RUN OK
и в конце [ PASSED ]
) — у вас всё прекрасно, тестики прошли успешно.
Однако в большинстве случаев первый вывод больше похож на что-то такое:
Running main() from gtest_main.cc [==========] Running 11 tests from 1 test case. [----------] Global test environment set-up. [----------] 11 tests from Matrix [ RUN ] Matrix.Init [ OK ] Matrix.Init (0 ms) [ RUN ] Matrix.CopyAssign [ OK ] Matrix.CopyAssign (0 ms) [ RUN ] Matrix.Add D:GitHub2-lab-03-matrix-aaaaaaaaleshatestsmatrix_unittests.cpp:48: Failure Expected equality of these values: s.Rows() Which is: 1 2 [ FAILED ] Matrix.Add (0 ms) [ RUN ] Matrix.AddEmpty D:GitHub2-lab-03-matrix-aaaaaaaaleshatestsmatrix_unittests.cpp:65: Failure Expected equality of these values: s.Rows() Which is: 4294967295 0 [ FAILED ] Matrix.AddEmpty (0 ms) [ RUN ] Matrix.Sub D:GitHub2-lab-03-matrix-aaaaaaaaleshatestsmatrix_unittests.cpp:79: Failure Expected equality of these values: s.Rows() Which is: 1 2 [ FAILED ] Matrix.Sub (0 ms) [ RUN ] Matrix.SubEmpty D:GitHub2-lab-03-matrix-aaaaaaaaleshatestsmatrix_unittests.cpp:94: Failure Expected equality of these values: s.Rows() Which is: 4294967295 0 [ FAILED ] Matrix.SubEmpty (0 ms) [ RUN ] Matrix.Mult D:GitHub2-lab-03-matrix-aaaaaaaaleshatestsmatrix_unittests.cpp:126: Failure Expected equality of these values: s.Rows() Which is: 2 3 [ FAILED ] Matrix.Mult (0 ms) [ RUN ] Matrix.Transposition [ OK ] Matrix.Transposition (0 ms) [ RUN ] Matrix.Minor [ OK ] Matrix.Minor (0 ms) [ RUN ] Matrix.Det D:GitHub2-lab-03-matrix-aaaaaaaaleshatestsmatrix_unittests.cpp:234: Failure Expected equality of these values: n.Det() Which is: 0 343. Which is: 343 [ FAILED ] Matrix.Det (1 ms) [ RUN ] Matrix.Inverse [ OK ] Matrix.Inverse (0 ms) [----------] 11 tests from Matrix (8 ms total) [----------] Global test environment tear-down [==========] 11 tests from 1 test case ran. (9 ms total) [ PASSED ] 5 tests. [ FAILED ] 6 tests, listed below: [ FAILED ] Matrix.Add [ FAILED ] Matrix.AddEmpty [ FAILED ] Matrix.Sub [ FAILED ] Matrix.SubEmpty [ FAILED ] Matrix.Mult [ FAILED ] Matrix.Det 6 FAILED TESTS Process finished with exit code 1
Тут тестики пытаются вам намекнуть, какой результат ожидался, а какой был выдан вашей
программой. Так что попытайтесь отдебажить ваш код — поставить точки остановки на
строчках, где временно хотите остановить программу и начать идти по ней «по шагам»:
и нажмите на зелёного жучка в той же верхней области (справа от стрелочки).
Видим, что мы вошли в режим дебаггера
далее можно поиграть с клавишами F8(step over) и F7(step into) — шаг с обходом и шаг
с заходом соответственно. Внизу можем наблюдать локальные и глобалльные переменные и то,
как они изменяются, пока мы шагаем по программе.
Процесс дебаггинга легко остановить нажатием на красный квадратик в той же верхней правой
строке.
Clang формат. Горячие клавиши.
В нашем ремесле существует специальная утилита clang-format. Она позволяет автоматически форматировать ваш код.
К примеру рассмотрим код до и после применения этой утилиты:
До:
#include <iostream> int main( ) {std::cout<<"Hello world!" <<std::endl; return 0;}
Понятно, что такой код читать неприятно, а убирать все пробельчики и табуляции ручками неудобно.
Так что применим нашу утилиту и придадим коду удобоворимый вид:
#include <iostream> int main() { std::cout << "Hello world!" << std::endl; return 0; }
Как это настроить:
Окно Clion: File->Settings->Keymap
Вводим в окно поиска «Reformat code» и смотрим
Тут настроено сочетание клавиш Ctrl+Alt+L
. Если у вас такого нет, то настройте и нажмите Apply
.
После этого вы сможете опробовать утилиту в действии!
Внесение изменений на удалённый репозиторий (сдача лабы)
Как только все баги пофикшены нужно, чтобы они отправились на удалённый репозиторий.
(чтобы ваши изменения были видны не только вам :D)
Для этого входим в наш уже знакомый Github Desktop и видим, как он подхватил наши изменения:
Однако помимо всего прочего в проект вшились cmake-build-debug
и .idea
. Там хранится всякая
компиляционная канитель, логи и прочее. Нам это не нужно. Чтобы Github Desktop исключил
этих ребят, нужно открыть файл .gitignore
(он есть в каждой лабе) и там на любой строчке добавить их в список следующим образом:
Результат видим следующий: теперь всё ненужное идёт мимо, остались только наши изменения.
Осталось дать осмысленное описание нашему коммиту и отправить его в полёт на просторы github:
не забудьте нажать на push(внимание: убедитесь что вы делаете это на ветке wp/lab
)
Далее переходим на страницу с лабой в браузере, переключаемся на ветку wp/lab
:
Тут у вас появится подобная рыжая вкладочка с предложением создания pull request’a
(что-то типо такого, картинку в интернетиках нашёл, не бейте)
Нажимаем Compare & pull request
, даём ему имя wp/lab
и продолжаем.
Далее вашу лабу начнёт проверять система автоматизированной сборки и проверки тестиков.
Получив у него галочки по всем пунктам можно отсылать ссылку на pull request своему
преподавателю. Дальше он будет вносить свои коррективы в ваш код.
Заключение
Я попытался написать поподробнее не только про саму работу на Шиндоус, но и общему
подходу к лабкам в принципе. Не сильно беспокойтесь, что сейчас всё это кажется таким
сложным и муторным. Парочка итераций по алгоритму и вы сами просечёте, в чём фишка и
будете делать это всё на автомате.
Если что, обращайтесь к вашим менторам/волонтёрам/преподавателям. Вам обязательно помогут.
За сим откланиваюсь. Спасибо за внимание.
Copyright 2020 aaaaaaaalesha & rkulagin