Установка и настройка компилятора и среды разработки на C++
Студенты могут бесплатно получить лицензию на CLion и другое ПО компании JetBrains, подав заявку. Нужна почта МЭИ, фотография студенческого билета или карта ISIC.
Установка и настройка GCC и CLion в Windows
Инструкция по развертыванию такой же среды разработки, как в лаборатории.
Внимание: в путях установки и в именах файлов проектов недопустимы пробелы, а в Windows — и кириллические символы.
Требования
- Windows 7 x64 и выше;
- 2 ГБ оперативной памяти.
Инструкция
- Скачать и установить компилятор MinGW-w64. При установке выбрать путь C:\MinGW-w64 . В случае проблем можно скопировать этот каталог из лаборатории или у коллег.
- Скачать и установить среду CLion.
- Скачать архив настроек CLion ( ) и импортировать настройки: пункт меню Configue →Import Settings стартового диалога или через пункт меню File →Import Settings. окна CLion.
- Установить CMake. Нужна ссылка в таблице Binary distributions!
Наладка среды разработки для OS X (macOS)
Студентов, которым это нужно, у нас мало, но особых проблем у них не было. Если хотите поделиться здесь своим опытом, обратитесь к Дмитрию Козлюку.
- JetBrains AppCode — предшественница/альтернатива CLion.
- Apple XCode — стандартная среда разработки для ОС Apple.
- Среда разработки на основе Code::Blocks, доступна в ОС Apple, хотя преимуществ у этого решения мало.
Наладка среды разработки в Linux
Студентов, которым это было бы нужно, у нас еще не было. Но Вадиму Никитину и Дмитрию Козлюку — каждый день.
- Нужен GCC и CMake, обычно это пакеты gcc и cmake .
- CLion работает под Linux, его можно скачать там же, где и для Windows.
- Вадим пользуется CodeLite.
Если CLion не устраивает
Как и всё остальное, CLion несовершенен, например, требователен к ресурсам и версии ОС. Вот несколько альтернатив.
- Microsoft Visual Studio Community Edition очень хороша, но требовательна к ресурсам и только для Windows. Включает собственный компилятор.
- Среда разработки на основе Code::Blocks, которая использовалась в 2013—2016 годах на Windows XP. Вместо Code::Block можно взять более продвинутую CodeLite.
- Редактор Geany очень легковесный. Компилятор и систему сборки нужно устанавливать отдельно (можно тот же MinGW-w64).
- Eclipse CDT: мощная, кроссплатформенная, но непростая в настройке среда. Компилятор и система сборки в комплект не входят.
© кафедра Управления и информатики НИУ «МЭИ», 2014—2016 г. г.
Install CLion
CLion is a cross-platform IDE that provides consistent experience on Windows, macOS, and Linux (for setup on FreeBSD, refer to this instruction).
System requirements
2 GB of free RAM
8 GB of total system RAM
Multi-core CPU. CLion supports multithreading for different operations and processes making it faster the more CPU cores it can use.
2.5 GB and another 1 GB for caches
SSD drive with at least 5 GB of free space
Officially released 64-bit versions of the following:
Microsoft Windows 8 or later
macOS 10.14 or later
Any Linux distribution that supports Gnome, KDE , or Unity DE * .
Pre-release versions are not supported.
Latest 64-bit version of Windows, macOS, or Linux (for example, Debian, Ubuntu, or RHEL)
* CLion is not available for some Linux distributions, such as RHEL6/CentOS6, which do not include glibc version 2.14 required by JBR 11.
You do not need to install Java to run CLion because JetBrains Runtime is bundled with the IDE (based on JRE 11).
Toolchain requirements
When using bundled MinGW, no additional tools are required
In case of Cygwin, install the version 2.8 or later with the gcc-g++ and gdb packages
In case of using the MSVC compiler: Visual Studio 2013, 2015, 2017, 2019, or 2022
In case of using WSL: Windows 10 Fall Creators Update (least version 1709, build 16299.15) and the tools required in WSL (see the Linux tab)
Xcode command line developer tools (to install, run the xcode-select —install command)
the make utility (run sudo apt-get -y install make to install it)
Install using the Toolbox App
The JetBrains Toolbox App is the recommended tool to install JetBrains products. Use it to install and manage different products or several versions of the same product, including Early Access Program (EAP) and Nightly releases, update and roll back when necessary, and easily remove any tool. The Toolbox App maintains a list of all your projects to quickly open any project in the right IDE and version.
Install the Toolbox App
Download the installer .exe from the Toolbox App web page.
Run the installer and follow the wizard steps.
After you run the Toolbox App, click its icon in the notification area and select which product and version you want to install.
Log in to your JetBrains Account from the Toolbox App and it will automatically activate the available licenses for any IDE that you install.
Install the Toolbox App
Download the disk image .dmg from the Toolbox App web page.
There are separate disk images for Intel and Apple Silicon processors.
Mount the image and drag the JetBrains Toolbox app to the Applications folder.
After you run the Toolbox App, click its icon in the main menu and select which product and version you want to install.

Log in to your JetBrains Account from the Toolbox App and it will automatically activate the available licenses for any IDE that you install.
Install the Toolbox App
Download the tarball .tar.gz from the Toolbox App web page.
Extract the tarball to a directory that supports file execution.
For example, if the downloaded version is 1.17.7391, you can extract it to the recommended /opt directory using the following command:
Execute the jetbrains-toolbox binary from the extracted directory to run the Toolbox App and select which product and version you want to install. After you run the Toolbox App for the first time, it will automatically add the Toolbox App icon to the main menu.
Log in to your JetBrains Account from the Toolbox App and it will automatically activate the available licenses for any IDE that you install.
You can use this shell script that automatically downloads the tarball with the latest version of the Toolbox App, extracts it to the recommended /opt directory, and creates a symbolic link in the /usr/local/bin directory.
Standalone installation
You can install CLion manually and have the option to manage the location of every instance and all the configuration files. This is useful, for example, if you have a policy that requires specific install locations.
Run the installer and follow the wizard steps.
On the Installation Options step, you can configure the following:
Create a desktop shortcut for launching CLion.
Add the directory with CLion command-line launchers to the PATH environment variable to be able to run them from any working directory in the Command Prompt.
Add the Open Folder as Project action to the system context menu (when you right-click a folder).
Associate specific file extensions with CLion to open them with a double-click.
To run CLion, find it in the Windows Start menu or use the desktop shortcut. You can also run the launcher batch script or executable in the installation directory under bin .
Extract the archive to the desired folder.
To run CLion, use the launcher batch script or executable in the extracted directory under bin .
There are separate disk images for Intel and Apple Silicon processors.
Mount the image and drag the CLion app to the Applications folder.
Run the CLion app from the Applications directory, Launchpad, or Spotlight.
Unpack the downloaded CLion-*.tar.gz archive. The recommended extract directory is /opt :
Do not extract the tarball over an existing installation to avoid conflicts. Always extract to a clean directory.
Execute the CLion.sh from bin subdirectory to run CLion:
To create a desktop entry, do one of the following:
On the Welcome screen, click Configure | Create Desktop Entry
From the main menu, click Tools | Create Desktop Entry
When you run CLion for the first time, you can take several steps to complete the installation, customize your instance, and start working with the IDE.
Silent installation on Windows
Silent installation is performed without any user interface. It can be used by network administrators to install CLion on a number of machines and avoid interrupting other users.
To perform silent install, run the installer with the following switches:
/S : Enable silent install
/CONFIG : Specify the path to the silent configuration file
/D : Specify the path to the installation directory
This parameter must be the last in the command line and it should not contain any quotes even if the path contains blank spaces.
To check for issues during the installation process, add the /LOG switch with the log file path and name between the /S and /D parameters. The installer will generate the specified log file. For example:
Silent configuration file
You can download the default silent configuration file for CLion at https://download.jetbrains.com/cpp/silent.config
The silent configuration file defines the options for installing CLion. With the default options, silent installation is performed only for the current user: mode=user . If you want to install CLion for all users, change the value of the installation mode option to mode=admin and run the installer as an administrator.
The default silent configuration file is unique for each JetBrains product. You can modify it to enable or disable various installation options as necessary.
It is possible to perform silent installation without the configuration file. In this case, omit the /CONFIG switch and run the installer as an administrator. Without the silent configuration file, the installer will ignore all additional options: it will not create desktop shortcuts, add associations, or update the PATH variable. However, it will still create a shortcut in the Start menu under JetBrains .
Install as a snap package on Linux
You can install CLion as a self-contained snap package. Since snaps update automatically, your CLion installation will always be up to date.
To use snaps, install and run the snapd service as described in the installation guide.
On Ubuntu 16.04 LTS and later, this service is pre-installed.
CLion is distributed via two channels:
The stable channel includes only stable versions. To install the latest stable release of CLion, run the following command:
The —classic option is required because the CLion snap requires full access to the system, like a traditionally packaged application.
The edge channel includes EAP builds. To install the latest EAP build of CLion, run the following command:
When the snap is installed, you can launch it by running the clion.sh command.
To list all installed snaps, you can run sudo snap list . For information about other snap commands, see the Snapcraft documentation.
IAR + Clion = дружба

Карантин заставил меня проводить все свое время дома, в том числе и свободное время, и хотя дома есть куча дел, я умело спихнул их на сына, а сам решил наконец-то доизучать среду разработки Clion от JetBrains, тем более, что в релизе 2020.1 появилась поддержка IAR toolchain.
Все кому интересен пошаговый гайд и куча картинок велком.
Введение
В своей работе, для разработки программного обеспечения различных датчиков я использую C++ IAR Workbench компилятор. У него есть свои недостатки, например поздняя поддержка новых стандартов С++, у него есть несколько критичных багов, которые не позволяют создавать удобные конструкции и оптимальные вещи, но в целом я люблю его.
Всегда можно обратиться за поддержкой к IAR, попросить добавить какую-нибудь функциональность или сделать улучшения, а также, что немаловажно, компилятор имеет сертификат безопасности, а это означает, что я могу положиться на этот компилятор и во время сертификации ПО к нему не будет претензий.
Последние мои исследования (когда я вызвал внутренний assert у IAR компилятора и он выдал мне простыню из отладочной информации) говорят о том, что собственно этот компилятор сделан на основе Clang, что радует своей перспективой.
Но есть у IAR одна очень напрягающая вещь — это редактор. Он конечно развивается, в него добавился кривенький интелисенс, подсветка синтаксиса и другие фишки из прошлого, но в целом редактор можно описать фразой — «Powered by notepad».
Поэтому для работы и для студентов я искал что-то более современное, модное, молодежное, недорогое (а для студентов и подавно бесплатное).
Мой выбор пал на Clion от JetBrains.
Общая информация
Clion это среда для разработки на С/С++. Но я не буду описывать все его прелести, они довольно хорошо описаны в руководстве. Вместо этого, я покажу, как подключить IAR компилятор и как проводить отладку. Описать словами как все это настроить очень сложно, поэтому я просто буду вставлять картинки с небольшими пояснениями.
Как я уже сказал, в версии 2020.1 была добавлена поддержка IAR компилятора. Огромное спасибо за это Илье Моторному ака Elmot, потому что до версии 2020.1 работа с IAR была немного загадочной и не совсем понятной.
Он уже выкладывал здесь статью про свой плугин для поддержки разработки встроенного ПО с использованием ST Cube, а сейчас еще приложил руку и голову к поддержке IAR. Он также вкратце описал, как подружить Cube, IAR и Clion здесь.
Создание проекта
В основе работы Clion лежит система сборки CMAKE, и любой проект настраивается на основе файлов настроек дя CMAKE. Поэтому чтобы создать проект, достаточно просто указать папку где будут лежать ваши исходники. Можно создать проект уже из существующих исходников, в таком случае, Clion автоматически прошерстит указанную папку с исходниками, найдет все c и cpp файлы и добавит их в список (CMAKELIST) для сборки.
Но давайте создадим проект с нуля, чтобы было понятно, как оно настраивается руками. Для этого необходимо выбрать пункт меню File->NewProject
В появившемся окне указываем путь к проекту, выбираем язык, тип выходного файла, версию языка и жмем кнопку Create . Конечно все это потом можно руками поменять в настройках CMAKE.
Нас интересует С++17 и тип выходного файла C++ Executable. На данном этапе ничего больше не надо.

Если вы заметили в настройках проектах уже сть опция Embedded->STM32CubeMX , она позволяет вам создать файл .ioc, в который затем можно добавить настройки из STM32CubeIDE. А поскольку Clion может работать с .ioc файлом, то все изменения в нем экспортируется в проект Clion.
Но это не наш вариант, мы хотим работать с IAR компилятором и микроконтроллерами по брутальному без всяких там Cubов. Итак, мы создали пустой проект, который содержит только один исходных файл main.cpp .

Как я уже говорил, вся концепция сборки с Clion построена на использовании CMAKE, поэтому основным файлом сборки будет являться CMakeList.txt, содержащий настройки целей для сборки, списки подключаемых директорий, списки исходных файлов и многие другие вещи, необходимы для сборки.
На данный момент файл выглядит вот так:

Как видите в нем указана только минимально требуемая версия CMAKE +
Собственно имя проекта +
Стандарт С++, который мы выбрали при настройке+
И единственный исходный файл для сборки — main.cpp
Скоро мы добавим сюда немного настроек, а пока необходимо установить toolchain
Выбор и установка Toolchain
Clion в теории может работать с любым toolchain.
Toolchain — это набор инструментов для сборки программ из исходного кода. Обычно туда входит, стандартные библиотеки, компилятор, линковщик, ассемблер, отладчик и другие полезные вещи.
Но стандартно Clion поддерживает популярные тулчейны — MinGW, CygWin, Visual Studio
В списке нет IAR toolchain, но это не беда, можно установить любой стандартный, я пробовал с MinGW и Visual Studio с обоими работает прекрасно.
Поэтому для начала необходимо установить один из стандартных toolchain, которые поддерживает Clion.
C Visual Studio все понятно, нужно просто скачать установщик у Microsoft и установить С++ пакет (поставить галочку, потому что по умолчанию устанавливается только C#).
Поэтому сразу давайте разберемся с MinGW, скачать его можно отсюда http://www.mingw.org/.
Для полного понимания: нужен installer, его можно обнаружить справа на ссылках Popular или All time :

Далее запускаем MinGW и указываем путь, куда это все дело поставить:

После копирования файлов, жмем Continue, запуститься Менеджер Инсталляции. Все что нам нужно это GNU C++ Compiler (собственно и он то не нужен, но нужно, чтобы, что-то было установлено) и Базовая инсталляция. Выбрали — жмем ApplyChanges .

Все это дело превосходно установится в течении минуты. Установка MinGW toolchain завершена. Перейдем теперь к настройкам.
Настройка
Сразу скажу, настроек в Clion немерено, я не будут рассказывать про все, цель статьи показать, как работать с IAR toolchain.
Итак, для начала идем в настройку Clion — File->Settings->Build, Execution, Deployment -> Toolchain и жмем на плюсик.
Выбираем из списка стандартных toolchain MinGW, ну или Visual Studio, если вы установили его. И ждём пока Clion сам определит местоположение компилятора, make утилиты, и отладчика.
Вообще ждать не обязательно, мы все равно это заменим своим 🙂

Теперь заменим все на нужный нам компилятор и отладчик. Для компиляции С и С++ файлов IAR использует тот же самый компилятор, поэтому просто в обоих случаях указываем один и тот же компилятор.
А вот отладчик нужно поменять либо на поставляемый (Bundled) с Clion, либо на отладчик из комплекта GNU ARM (можно скачать отсюда https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads)
Самое простое использовать отладчик поставляемый с Clion:

Можно сразу переименовать ваш toolchain в IAR, чтобы отличать его от стандартного MinGW.
Утилиту make можно использовать из комплекта MinGW, но если очень хочется, то можно поменять её на любую другую, например, я использую clearmake, поставляемый с системой контроля версий ClearCase (не спрашивайте, почему — так исторически сложилось)
Вы также можете поменять make сборку на какую-нибудь другую, например на ninja, более подробно об этом можно прочитать здесь.
Базовая Настройка CMAKE
Перед тем как собирать проект, необходимо выполнить базовые настройки CMAKE, для различных вариантов сборок, например, Release или Debug. Создадим обе.
Для этого идем в File->Settings->Build, Executiion, Deployment -> CMake

И жмем на «+» плюсик

Автоматически у вас создастся конфигурация сборки для Debug. Здесь можно добавить кое какие опции для CMake, поменять папку для сборки, и добавить опции для make или другого сборщика (Build Options). По умолчанию, стоит ключ -j 16( у вас может быть и больше), что означает задействовать все 16 ядер для параллельной компиляции модулей. Такой параллелизм хорошо работает, кода весь код лежит на локальной машине, но если он лежит где-нибудь в сети или удалённой системе контроля версии (моя история) и этот доступ осуществляется медленно, через VPN, то лучше поставить компиляцию на одно ядро.
Для выбора типа сборки Debug или Release нужно использовать выпадающий список Build Type.
Точно также создаём еще один тип сборки Release.
После нажатия на кнопку Apply Clion должен будет пересобрать проект CMAKE, и если вы нигде не допустили ошибок, то после пересборки у вас должен появиться вот такой выбор в списке возможных сборок:

В принципе уже сейчас можно компилировать, жмем на молоток и видим что компиляция происходит успешно, а вот линковка нет, требуется метод __write() , который вызывается оператором вывода в main.cpp.
Все потому что мы не настроили ключи для компилятора и линковщика. Переходим к настройку CMake.
IAR выложил пример с настройками для CMake, он лежит здесь.
Все что я сделал, это добавил две ветки настроек для двух типов сборок Debug и Release.
Да еще поменял имя выходного файла на *.elf установив переменную set(CMAKE_EXECUTABLE_SUFFIX «.elf»)
Осталось добавить нашу настройку в CMakelist.txt:
Каждый раз когда вы меняете Cmakelist.txt или настройку toolchanin необходимо запускать пересборку Cmake проекта. Можно настроить, чтобы она делалась автоматически, но лучше просто руками нажимать на кнопку Reload Cmake, а вот для того, чтобы жестко пересобрать Cmake проект, лучше пойти в toolbox Cmake и выбрать там пункт Reset Cache and Reload Project

Теперь можно снова попробовать пересобрать проект, нажав на молоток. Если вы опять все сделали правильно — ваш простой проект должен собраться.
Настройка отладчика
Для отладки я буду использовать OpenOCD gdb сервер, но вы можете использовать Jlink gdb сервер или ST-Link gdb сервер.
Скачаем стабильную версию, на момент написания статьи это была версия 0.10.0: https://sourceforge.net/projects/openocd/files/openocd/0.10.0/ можно её собрать самому. Но если лень с этим возиться, то можно использовать неофициальную сборку под Windows: http://www.freddiechopin.info/en/download/category/4-openocd.
Итак, для настройки отладчика нужно сделать следующие шаги:
Убедитесь, что в настройках стоит gdb клиент из поставки File->Settings->Build,Execution,Deployment->Toolchains->Debugger: Bundled GDB
Переходим в настройки отладчика Run -> Edit Configurations -> Templates
И находим там Embedded GDB Server

В шаблоне нет настроек и можно для каждого проекта использовать пустой шаблон и каждый раз его настраивать, а можно сразу настроить шаблон, чтобы в следующем проекте переиспользовать настройки.
Настроим сразу шаблон:
В опции Download executable поставим галочку, на Update Only — позволит загружать в микроконтроллер образ программы только в том случае, если были были какие-то изменения, в противном случае прошивки не будет.
OpenOCD по умолчанию работает по tcp протоколу, т.е. вы можете подключаться к серверу удалённо по IP адресу и порту по умолчанию 3333 (порт можно менять, но нам это не нужно). Так как запускаться OpenOCD будет на локальном компьютере, то и в опции target remote args нужно установить в значение tcp:127.0.0.1:3333
В опции GDB Server прописываем путь к OpenOCD, туда куда вы уже его скопировали на предыдущих шагах.
В GDB Server args прописываем строку запуска OpenOCD сервера с аргументами. Так как я использую китайский клон Nucleo, который называется XNucleo, то я немного подредактировал конфигурацию st_nucelo, прописав идентификационный номер вендора китайского отладчика (hla_vid_pid — The vendor ID and product ID of the adapter) и поменял имя файла настроек. В итоге моя строка для аргументов OpenOcd выглядит следующим образом:
-f ../scripts/board/st_xnucleo_f4.cfg -c «reset_config none separate» -c «init» -c «reset halt»
Здесь ключ -f задаёт имя конфигурационного файла, вместо моего st_xnucleo_f4.cfg, поставьте вашу плату, либо если у вас нет платы, то прописать нужно конфигурацию для процессора и для отладчика в отдельном файле и уже подключить этот файл.
Ключ -с задаёт команду, которая следуют за ключем в кавычках.
-c «reset_config none separate» — означает, что сброс производится через SWD без использования отдельной ножки сброса (а у меня как раз такой китайский отладчик).
-c «init» — запускает команду «init», которая запускает загрузочные OpenOCD скрипты под ваш целевой процессор
-c «reset halt»_ — выполняет немедленный сброс микроконтроллера после инициализации
В принципе все. Больше ничего не нужно. У вас должен получиться вот такой шаблон

Осталось на основе этого шаблона создать конфигурацию:
- Снова переходим в Run -> Edit Configurations
- Жмем на «+»

и выбираем наш Template. Переименовываем как-то по человечьи

И собственно теперь можно запускать на проверку, жмем на жука и смотрим, как все работает.
В опциях Advanced GDB Server options можно дополнительно установить команды выполняющиеся после загрузки кода. Я поставил перезагрузку и перенаправление потока вывода через отладочный интерфейс — monitor arm semihosting enable . Только не забудьте поставить галочку Download executable: Always иначе загрузки не будет и команды не выполнятся.
Теперь все обращения к потоку вывода будут отражаться у вас в окне Debug: Console . Выводиться будет медленно, но для отладки пойдет.
Также вы можете просмотреть все регистры для вашего микроконтроллера но нужно будет их подключить, используя .svd файл.
Завершающий этап
Чтобы наш проект заработал вообще как надо, добавим в него файл startup.cpp , в котором будет происходить инициализация стека, инициализация статических переменных, fpu и храниться таблица векторов прерывания и собственно переход на точку входа программы main() .
Для этого нам достаточно скопировать файл startup.cpp в папку проекта и добавить его в сборку.

Теперь наш проект готов и вы можете скачать его здесь: Постой проект с настройками для IAR
Для открытия в Clion достаточно зайти в меню File->Open и выбрать папку в которую вы его разархивировали.
Да остался один момент:
Статический анализатор, проверяющий код на лету, на основе Clang пока не работает для IAR, так как не понимает ключи компилятора, поэтому его придется отключить, через меню File->Settings -> Languages&Frameworks -> C/C++ -> Clangd .
Убрать галочку Enable clangd server.

Заключение
В качестве заключения хотелось бы сказать, что работать в IAR IDE после Clion как то не очень хочется. Хотя для детальной отладки все таки придется использовать IAR, так как средства отладки там явно обширнее. С другой стороны к отладке я вообще редко обращаюсь, разве что проверить код студентов, когда он не работает.
Clion бесплатен для студентов и поэтому проблем с его установкой у них быть не должно, но и в принципе лицензия тоже не дорогая. Думаю, что студентам Clion серьезно облегчит жизнь и привнесет песчинку радости в их угрюмую жизнь, потому что сейчас больно смотреть на их муки написания кода. Да, что таить и на работе тоже.
А еще работать в Clion приятно, потому что все в одном. Например, эту статью я пишу тоже в Clion и сразу вижу её отображение.

А ведь есть еще куча всяких других плюшек, про которые я рассказывать не буду, они описаны на сайте JetBrains. Просто завершающий гифчик, показывающий скорость работы: