Clion не видит файл

Обновлено: 06.07.2024

По традиции, сразу начну с того, что Cmake - говно.
Не пойму обо что ударились jetbrains, что выбрали его системой сборки проектов.

И проблемы в CMake начинаются сразу как только вам пришлось сделать шаг в сторону от стандартной процедуры сборки.

Но может быть я чего то не понимаю.

CMake рассчитан на скажем так стандартные процедуры сборки

к примеру возьмем простой CMakeLists.txt

этот CMakeLists.txt
генерирует правила для сборки следующих таргетов (по мимо служебных)

а что если у нас компилятор типа clang которые еще умеет в bytecode и в llvm ir
и даже более того, что если llvm умеет делать компановку на увровне байткода

как нам поменять стандартный маршрут генерации экзешника?
допустим сейчас он такой

я так понимаю что нам надо тупо забить на add_executable
и описывать весь маршрут на add_custom_command + add_custom_target
но нафиг тада вообще весь этот CMake вперся

Не используй CMake.

Ghost2
ясен пень я за этот вариант.
но JetBrains почему то решили что CMake нужнее всего

Не используй JetBrains. Не готов он ещё к серьёзной работе.

я в принципе думаю, что можно clion и cmake использовать только как систему проверки сборки.
т.е. писать код в Clion и проверять в нем же собираемость, а потом запускать лежащий рядом Makefile
и фсе

Necrys
> Не используй JetBrains. Не готов он ещё к серьёзной работе.
я просто обрадовался вот нормальная IDE а тут бац и такая подстава
все сводится к тому что проще писать тупо в Sublime без IDE

cNoNim
У меня накануне ещё была беда с аутпутом сборки, по умолчанию он собирает (в венде) в свою директорию, глубоко зарытую в недра юзерской папки. Выставил в cmake аутпут в ./bin, бинарь стал класть куда надо, а запускать и дебажить всё равно из своей берёт, т.е. запускает какой-то старый бинарь. Бред.

Necrys
> проще писать тупо в Sublime без IDE
Я NetBeans юзаю. Всё таки без переходов по коду, туго.

Правда у меня gcc/mingw кругом. Хз чо там с шлангом.

Necrys
> У меня накануне ещё была беда с аутпутом сборки, по умолчанию он собирает (в
> венде) в свою директорию, глубоко зарытую в недра юзерской папки.
да это вообще бред, я столкнулся с проблемой после того как решил в clion писать pnacl проект
ну перевел я сборку исполняемого файла на CMake как бы не самая сложная задача, но для запуска проекта еше как минимум нужен манифест, html страница
и веб сервер которые все это будет отдавать. или chrome extention делать
но суть в том что запускать надо не сам исполняемый файл и фсе приехали clion ни чем вменяемым не поможет походу

> Конец 2014
> Продолжают использовать пошаговое исполнение кода в отладчике
От отладчика одна польза - посмотреть стек где упало.
Пишите код проще, который не надо трассировать, а достаточно тестов.
Кроме того если появляются треды, то отладчик становится бессилен (пока вы ставите тред на паузу другие убегают вперёд и рушат всё состояние программы), только трассировка цепочек вызовов.

Я хотел перенести этот проект на CLion, который кажется действительно хорошим IDE (на основе аналогичной IDE AndroidStudio), но у меня возникают некоторые проблемы.

Небольшая тестовая программа

Я попробовал эту маленькую программу в качестве теста:

Программа компилируется и работает нормально. Однако CLion не распознает пространство имен spaces (объявленное в одном из дочерних файлов) и пространство имен simulations ; они оба помечены красным, и я не могу ни проверить их содержание, ни перейти к их определениям ⌘ -клики и тд и тп .

Соответствующие части библиотеки

Глядя в "sponf.h" мы находим

в то время как в "sponf_children.h" (который находится на верхнем уровне, рядом с "sponf.h" ) мы находим

Каждый "дочерний" заголовок затем будет включать соответствующий заголовок "предка" или "категории" (который определяет суперкласс самого "потомка").

Реакция CLion

Не удается найти объявление для перехода

в то время как правая лента редактора сигнализирует о многих ошибках, таких как

',' или) ожидается

) ожидается

Ожидается декларатор

Ожидаемый тип

Отсутствует ;

Неожиданный символ

которые не одинаковы для каждого оператора включения (каждый генерирует от 2 до всех этих ошибок).

С другой стороны, CLion прекрасно может найти все заголовки Eigen , которые имеют практически одинаковую структуру!

Я поместил обе библиотеки в /opt/local/include и соответственно изменил CMakeLists.txt

Почему CLion не может правильно проанализировать структуру проекта? XCode, после включения /opt/local/include/sponf и /opt/local/include/eigen3 в HEADER_SEARCH_PATHS env. переменная проекта, способна найти любой заголовок при составлении точно такой же программы.

Есть что-нибудь еще, что мне нужно знать? Я делаю это неправильно или CLion еще не настолько зрел, и это просто печальная ошибка? Это мой первый подход к CLion и CMake toolchain, поэтому любая информация о нем будет принята с благодарностью!

Извините за очень длинный вопрос, мне не удалось его уменьшить . Заранее спасибо, ребята, до скорой встречи!

Я использую CLion IDE, Cmake и пытаюсь написать Hello world, используя библиотеку CERN ROOT.

CMakeLists.txt :

/ export ROOTSYS = "$ HOME / tools / root-build /" :

$ENV По какой-то причине во время сборки в CLion пусто. Но $PATH возвращается правильно .bashrc .

Что я сделал не так?

В: Как передать переменные среды и параметры в CMake в CLion?

A: Лучший способ - использовать Настройки / Настройки | Создание, выполнение, развертывание | Диалоговое окно CMake.

Что касается /etc/enviornment файла, то он используется только bash . CLION не нужно использовать bash для запуска процесса конфигурации.

введите описание изображения здесь

Перейдите в Файл -> Настройки -> Сборка, выполнение, развертывание

Нажмите «Пропустить» и .

Для старого клиона

введите описание изображения здесь

Для Clion 2017.2

введите описание изображения здесь
введите описание изображения здесь

Переменные из .bashrc не передаются

В Ubuntu 17.04 вы можете установить постоянную переменную окружения, изменив

[Я предполагаю, что вы можете сделать это в других версиях Linux, но я предоставляю версию системы, которую я использую.]

Например, я компилирую тестовые примеры, которые предполагают, что $ установлен. Я добавил в свой GOOGLE_MOCK=/usr/local/src/googletest/googlemock GOOGLE_TEST_HOME=/usr/local/src/googletest/googletest файл следующее, и теперь мне не нужно переписывать все мои файлы CMakeLists.txt:

Клион просто стал намного более полезным. Надеюсь, это поможет кому-то еще!

Одна вещь, которую вы можете проверить, это .gdbinit . Clion on Linux будет ссылаться на gdb, который будет читаться в set environment LD_LIBRARY_PATH xxx . У меня .gdbinit в моем LD_LIBRARY_PATH файле есть файл, который переопределит все, что вы установили export из оболочки, будь то через прямую .bashrc или сквозную .bashrc или из панели переменных среды CLION.

После установки необходимо произвести минимальные настройки для работы с STM32:


Переходим в настройки среды, где скачиваем и устанавливаем MinGW (все по умолчанию).


После установки везде в Toolchains оставляем все по умолчанию кроме Debugger.


Прописываем в Debugger путь до arm-none-eabi-gdb.exe


Переходим в раздел Embedded Development


Прописываем в OpenOCD Location путь до openocd.exe


Прописываем в STM32CubeMX Location путь до STM32CubeMX.exe

На этом настройка Clion для работы с STM32 завершена.

Работа с Clion для STM32

Создаете проект в STM32CubeMX для вашего типа микроконтроллера.


В Project Manager устанавливаем тип IDE STM32CubeIDE и генерируем проект.


Открываем проект в Clion

Автоматически Clion определяет тип микропроцессора и генерирует CMakeList


Настраиваем конфигурацию вашего отладчика для OpenOCD в примере отладчик ST-LINK v.2 микроконтроллер STM32F103C8T6 (bluepill)

Конфигурации для вашего микроконтроллера и отладчика ищем через Assistant в директории с OpenOCD или в (..OpenOCD-20191216- 0.10.0\share\openocd\scripts\board\).

Собственно, на этом работа по настройке отладчика для проекта закончена.


Не забываем в случае наличия ошибок при компиляции проекта периодически особенно после подключения заголовочных файлов *.h сбрасывать кэш и перегенерировать проект.

В случае использования FreeRTOS и появлении ошибок при компиляции в конфигурационном файле CMakeLists_template.txt снимите комментарии со следующих строк.

и перегенерируйте проект (см. абзац выше).

Устанавливаем через Jetbrains ToolBox Clion

Запускаем Clion и заходим в его настройки Проверяем что Toolchains у нас настроен и доступен Проверяем что Embedded Development корректно видит все составляющие. В случае необходимости подсовываем ему пути куда установили компоненты.


Создаете проект в STM32CubeMX для вашего типа микроконтроллера В Project Manager устанавливаем тип IDE STM32CubeIDE и генерируем проект


Открываем проект, подготовленный с использованием STM32CubeMX

Настраиваем OpenOCD под вашу плату Добавляем конфигурацию OpenOCD и выбираем конфигурационный файл для вашей платы. На этом настройка закончена С помощью волшебных кнопочек мы можем собирать, запускать или отлаживать микроконтроллер.

Читайте также: