возвращенный код 0x2 в clion
Как скомпилировать нормально в Clion?
На C++ возможно всё, просто это такой язык, в котором за вас никто ничего не будет делать, вы несёте ответственность за каждую мелочь, за каждую опцию, и должны это всё понимать, в отличие от других языков.
Погуглите, что такое статическая и динамическая линковки, что такое единица компиляции, объектный файл, почитайте про процесс линковки, как разрешаются имена во время линковки, почему могут быть коллизии, и т. п.
В любом языке программирования существуют runtime-библиотеки. В них хранится вся встроенная логика и стандартные библиотеки языка. В нормальных условиях принято линковать динамически. Это когда есть динамическая библиотека (DLL, SO, dynlib), она загружается в память единожды и её могут использовать все, кто к ней прилинкован.
Вы же используете Clion, который, в свою очередь, использует CMake для управления проектом. У CMake, как и, собственно, у многих других систем сборки, есть такая штука, Deploy называется. Вы же, как PHP-разработчик, ведь тоже выполняете деплой, верно? Точно так же делается и здесь, особенно на винде. Вам нужно написать CMake-target для деплоя, который сам посмотрит, что нужно вашему «сраному hello world’у», и соберёт в одном каталоге эти все дела для запуска. Дальше вы выбираете в CLion в поле Build/Run Configuration свою цель деплоя, жмёте Build. И все оказывается в одной папке и беспроблемно запускается везде.
Вот здесь есть пример использования модуля BundleUtilities для деплоя (fixup_bundle).
Спасибо за совет. у меня сейчас 2 файла есть
CMakeLists.txt
Может подскажите? не понимаю что делаю не так.
Вообще я конечно хочу писать чтобы на линукс сервере запускалось все, чисто под винду не хочу писать
Ну я же уже написал, что нужно делать. Пройдите по ссылке с примером, и напишите под себя макрос.
А на линуксе будет все само работать, ибо там уже все есть для запуска.
Как настроить CLion актуальной версии для запуска и компиляции
CLion — это относительно новая IDE разработки и отладки кода на C/C++. Она основана на популярной платформе Intellij и наследует от нее большинство полезных функций, таких как:
Обзор IDE C L ion
При кодировании C L ion позволяет ва м вообще забыть о рутине. Компилятор и отладка кода в C L ion просто на высоте. Вы можете четко сконцентрироваться только на важном, а все остальное этот редактор возьмет на себя. Данная IDE способна повысить в ашу производительность за счет «умного» и своевременного автозавершения кода, мгновенной навигации по документу и надежного рефакторинга.
Преимущества C L ion перед другими IDE
Как настроить IDE CLion?
Запуск и отладка CLion
В зависимости от цели вашего проекта (CMake, Makefile, Gradle) CLion будет генерировать необходимую конфигурацию, которую можно будет запустить.
Запуск CLion
Условно весь запуск можно поделить на несколько частей :
Отладка CLion
CLion интегрируется с серверной частью GDB на всех платформах и с LLDB на macOS и Linux. Условно процесс отладки можно разделить на несколько частей:
CLion — это достаточно умная среда разработки. Функциональность всей IDE не уместить в одну статью, поэтому ее нужно пробовать. Настроить C L ion просто, отладка происходит интуитивно, компилятор работает безупречно, общая функциональность этой IDEшки впечатляет. Что еще нужно для успешной разработки?
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Неправильный вывод в clion
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Скачал Clion, установил MinGW, пытался настроить, но так и не смог. Clion говорит, что Cmake выдаёт ошибку
Скачал Clion, установил MinGW, пытался настроить, но так и не смог. Clion говорит, что Cmake выдаёт.
неправильный вывод
#include «stdafx.h» #include «math.h» #include using namespace std; int.
Неправильный вывод
Здравствуйте. Сильно мучает проблема вывода в коде. #include #include using.
Неправильный вывод
При x = 0 или x = 1 должен выводиться текст «Нет значений». При вводе шага(dx) если он имеет 2.
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Неправильный вывод
Когда изучаешь новый язык программирования, всегда хочется в первую очередь увидеть как.
Неправильный вывод
Нужно перемножить отрицательные(нужно взять их в обратном порядке) и положительные члены массива.
Неправильный вывод
string str = «»; // input data of banner obj.setBannerName(str); bool.
Неправильный вывод данных
Здравствуйте! Программа, которая разворачивает строку по словам. Подскажите где ошибка.
Code coverage
In CLion, you can run CMake applications and tests with code coverage measurements. Code coverage results provide the percentage of code lines executed during a run and the number of times a particular line was hit.
CLion relies on llvm-cov/ gcov integration to collect and show code coverage data. These tools require special coverage compiler flags, which you can pass manually or let CLion add them automatically.
Running CMake applications or tests with coverage
The Run with Coverage action is available for CMake Application and test configurations (Boost.Test, Google Test, or Catch).
You can call Run with Coverage from the toolbar next to the configuration switcher or from the gutter menu:
Search for an existing CMake profile, which has the same build type, toolchain, and CMake options as in the currently used profile, but with added compiler options for coverage (see Coverage compiler flags). If one is found, CLion will switch to it and use it to run your configuration with coverage.
Coverage compiler flags
If you pass coverage flags manually, you can use one of the following options depending on the compiler and coverage tooling you prefer:
In this case, the gcov tool will be used.
Use the same flags as for GCC to get the gcov-style coverage collected with llvm-cov gcov.
For Clang-cl, code coverage is available only for the x86 architecture. Make sure to select it in the Architecture field of your Visual Studio toolchain.
You can provide the flags by setting the CMAKE_CXX_FLAGS variable ( CMAKE_C_FLAGS for C projects) or using other alternatives like the add_compile_options command.
Coverage results
When coverage data is ready, the Coverage tool window opens up automatically. Initially, it shows the percentage of files per folder covered during the launch. If you double-click a folder, you will see the Line Coverage and Branch Coverage columns.
Line Coverage shows how many lines per file were covered. Note the following difference in how it works depending on the compiler and the flags you are using:
Branch Coverage takes into account all the branches of each control structure.
GCC and the gcov tool consider the compiler-generated branches when calculating branch coverage. This might affect the results if, for example, you use exception handling.
In any file, you can check the gutter indicator and click it next to a particular line to learn how many times it was hit:
A line executed fully is marked green. Yellow marker means that it was only partically executed.
CLion also shows coverage statistics in the Project view:
Merging results from several runs
When you rerun coverage analysis, CLion prompts you to choose how you prefer the new results to be presented:
Add to active suites – new results will be added to the previously collected statistics.
Replace active suites – the already collected data will be overwritten.
Do not apply collected coverage data – new results will be ignored.
Coverage settings
Code coverage settings are gathered in the Settings / Preferences | Build, Execution, Deployment | Coverage :
Troubleshooting
If you get empty coverage reports, check whether your compiler version matches the version of gcov / llvm-cov tool (default or custom) that you are using.
Keep this in mind when changing compilers or switching from one Windows toolchain to another.
JetBrains CLion для микроконтроллеров
CLion — это среда для разработки на С/С++, близкий родственник IntelliJ IDEA и, соответственно, Android Studio.
Я представляю вниманию сообщества перевод моего блог поста, в котором по шагам описано, как использовать эту IDE для написания прошивок микроконтроллеров.
Примерно полтора года назад я написал блог-пост по английски, в котором рассказал, как можно использовать JetBrains CLion для программирования микроконтроллеров.
Если кратко, в тот раз я использовал одну из плат серии STM32-Discovery. Набортный программатор был перешит в совместимый с SEGGER JLink. Также был использован генератор кода STM32CubeMX, тулчейн GCC ARM и отладчик SEGGER Ozone. При помощи всего этого удалось поморгать светодиодиком :).
Такой набор инструментов в целом работал, но требовал перешивки программатора, запуска внешнего отладчика (зачем он нам, если есть замечательный CLion?), кроме того, SEGGER накладывает довольно жесткие лицензионные ограничения на такие перепрошитые программаторы.
Естественно, все эти проблемы меня не радовали, и я пытался найти решение получше. К счастью, прогресс не стоит на месте, и за прошедшее время и CLion, и CubeMX были существенно улучшены, и самое главное, CLion теперь поддерживает Remote GDB. Теперь стало реально использовать OpenOCD (Open On-Chip-Debugger) как ПО для заливки и отладки прошивок микроконтроллеров. Таким образом можно избавиться от ограничений лицензии SEGGER в пользу инструментов с открытым исходным кодом. Более не требуются никакие перепрошивки программаторов, демо-платы можно использовать прямо так, даже для прошивки целевых устройств (см. документацию на платы ST Nucleo или Discovery).
Мне удавалось запустить это все на ванильном CLion, но настройка проектов была настолько сложной, что я в конце концов пришел к мысли написать свой собственный плагин, который позволит увязать друг с другом все инструменты сразу. И вот, я довел плагин до бета-версии, опубликовал в репозитории JetBrains, и готов показать, как это все это функционирует. Для примера мы сделаем небольшой демо проект (сюрприз! Мы будем мигать светодиодами!), используя одну из самых популярных плат от ST Microelectronics – STM32F4-Discovery. Тот же самый пример, с небольшими изменениями, может быть запущен на любой плате из серий STM32 Nucleo, Discovery или EVAL, поскольку светодиоды есть на каждой из них.
Инструментарий
CLion
Прежде всего, нам нужна, собственно, IDE. CLion доступен для загрузки на сайте JetBrains. Просто запустите инсталлятор и следуйте инструкциям. Вам понадобится лицензия, но месячного триала должно хватить на первое время. Инструкция по установке тут.
Плагин
Откройте настройки CLion, вкладку Plugins, нажмите Browse Repositories… и найдите плагин по ключевому слову openocd. Далее Install и рестарт CLion.
Теперь в CLion появился еще один Run Configuration, два дополнительных пункта в меню Tools еще одна вкладка в настройках.
Тулчейн
Тулчейн (toolchain) – это кросс-платформенный набор инструментов для сборки программ и прошивок. Кросс-платформенный – это значит, что компиляция происходит на PC или Mac, а результат сборки будет работать только на целевом устройстве. В нашем случае это ARM-совместимый МК.
Существует несколько разных тулчейнов, таких как свободные и поддерживаемые CLion’ом Clang или GCC, а так же несколько коммерческих (Keil, IAR, Raisonance, etc). Я использую GCC, скачанный из официального источника – https://developer.arm.com/open-source/gnu-toolchain/gnu-rm. Обратите внимание, после установки тулчейн должен включен в system path. Проверить это можно, запустив arm-none-eabi-gcc из командной строки.
OpenOCD
OpenOCD – это отладчик, поддерживающий аппаратную отладку различных МК с помощью одного из множества поддерживаемых программаторов. Также он может прошивать FPGA и flash-память. Таким образом, потенциально можно работать с огромным количеством разных чипов, не ограничиваясь продукцией ST.
Из всех возможностей OpenOCD плагин использует три:
поддержка прошивальщика ST-Link/V2
Поддержку МК с ядром ARM Cortex M
Поддержку протокола Remote GDB
OpenOCD официально распространяется в виде исходников, но существуют также полуофициальные сборки под все популярные платформы. Более подробно смотрите тут: http://openocd.org/getting-openocd/. Под Windows еще нужен драйвер для ST-LINK/V2. Драйвер обычно идет в сборке OpenOCD для Windows, но можно его скачать и напрямую, с сайта ST, вместе с весьма удобной утилитой для прошивки МК, вот отсюда: http://www.st.com/en/development-tools/stsw-link004.html.
STM32CubeMX
Приступим
Одна из самых популярных плат для STмовских МК – STM32F4-Discovery. Ее и возьмем для нашего примера. На борту довольно мощный (хотя и не топовый) МК – STM32F407, прошиватель, совместимый с ST-LINK/V2, и 4 управляемых светодиода. Там еще микрофон, звуковой выход, акселерометр, USB, но в этой статье мы не будем углубляться в них – займемся только светодиодами. Если у вас уже есть какая-нибудь другая плата из серий STM32 Discovery, Eval или Nucleo, то это не беда, вы можете сделать все тоже самое на любой из них, т.к. там есть как минимум один светодиод.
Настройка платы
После установки всех инструментов давайте, наконец, напишем «улучшенную мигалку» для нашей STM32F4-Discovery. Перво-наперво, запускаем CubeMX. При старте он загружает список доступных МК и плат из сети, и после этого можно выбрать любой из МК. Естественно, мы больше заинтересованы в платах. Переходим в “Board Selector”, находим и дважды кликаем STM32F4DISCOVERY.
После этого откроется редактор, в котором показан собственно чип МК, и можно настроить режимы пинов, любую периферию и схему тактирования процессора, пользуясь тремя вкладками. На последней, четвертой, вкладке ничего настроить нельзя, но можно рассчитать энергопотребление чипа в зависимости от конфигурации.
Поскольку мы начали не с «голого» МК, а с платы, то кое-что уже сделано для нас. В частности, настроены нужные нам GPIO для светодиодов, им даже присвоены имена LD3. LD6. Нам только требуется донастроить сам проект и сгенерировать код. Нужно выбрать папку проектов, имя собственно проекта и задать SW4STM32 в качестве Toolchain/IDE.
Теперь нужно закрыть настройки и нажать Generate Code, т.е. кнопку с шестеренкой. Когда генерация кода закончена, просто закройте финальный диалог (т.е. не надо трогать кнопку «Open Project»).
Настройка параметров плагина.
Снова откройте настройки CLion, на этот раз вкладку OpenOCD Support в группе Build, Execution, Deployment.
Там необходимо указать папку, где находится OpenOCD и файл конфигурации для платы. Плагин пытается найти OpenOCD в system path сам, но иногда нужно явно прописать точное местонахождение. В большинстве случаев настройки портов и путь к GDB вам менять не надо, однако пользователям Mac все-таки нужен другой gdb. Например, можно взять arm-none-eabi-gdb из тулчейна.
Самое последнее, что нужно сделать – выбрать файл конфигурации платы (Board Config File) с помощью соответствующего диалога. Эти файлы находятся в подпапке boards инсталляции OpenOCD. Для данного проекта наилучшим выбором является, очевидно, stm32f4discovery.cfg.
А теперь добавим кода
Вот теперь мы все необходимые настройки сделаны, можно писать код. Открываем main.c, находим бесконечный цикл while и добавляем туда несколько строк, см. строки 106-111:
Эти строки зажигают случайную комбинацию светодиодов каждые 300 мсек.
Также можно добавить несколько директив #pragma (строки 100, 101 и 113) чтобы избавиться от предупреждений CLion – бесконечные циклы не используются в «нормальных» программах на C и, поэтому, они не нравятся нашей IDE.
Ключ на старт!
Настал момент поставить breakpoint где-нибудь внутри тела main() и запустить это все! CLion соберет проект, загрузит в нашу плату, запустит отладчик и сбросит МК. Теперь можно пользоваться breakpoints и watches для отладки.
Лучше один раз увидеть, чем три раза прочесть:
Что дальше?
Если уважаемому читателю удалось проделать все вышеописанное, то простенький пример прошивки работает. Но как писать код далее? Окей, вот несколько советов в форме вопрос-ответ.
Q: Какие платы поддерживаются?
A: Более-менее любые демо платы STMicroelectronics серий STM32 Discovery, Nucleo или EVAL должны работать.
Q: Что делать, если мне надо поменять аппаратную конфигурацию МК?
A: Запустите STM32CubeMX снова и откройте ваш проект, сделайте необходимые изменения и перегрерируйте код. Плагин в IDE спросит, не надо ли обновить проект. Просто ответьте «Yes».
Q: Мне нужно добавить внешнюю библиотеку, подключить FPU, сделать еще какие-то изменения в CMakeLists.txt. Но как?
A: CMakeLists.txt автоматически перезаписывается плагином из шаблона, напрямую там лучше ничего не менять. Сам шаблон автоматически записывается среди файлов проекта, следует сделать изменения там, после чего обновить проект, используя пункт меню Tools->Update CMake project with STM32CubeMX.
Q: Я хочу использовать CLion и плагин для моих разработок, но не для ARM. Это возможно?
A: Ну, если ваш МК поддерживается GCC, прошиватель совместим с OpenOCD, то как минимум можно попробовать. Возьмите подходящий тулчейн и см. предыдущий ответ.
Q: Я не могу подобрать подходящий файл конфигурации платы. Я могу использовать несколько отдельных файлов конфигурации?
A: Можно написать свой файл конфигурации платы, скомбинировав их. Положите его в свой проект, а за образец возьмите один из стандартных.
Q: А мне нравится! Могу я как-нибудь поддержать проект или поучаствовать в нем?
A: Конечно!