Официальный форум СВД Встраиваемые Системы
26 Апрель, 2024, 06:17:09 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Работа с CMake-проектами в QNX Momentics IDE  (Прочитано 5132 раз)
Игорь Рондарев
Модератор
Опытный пользователь

Сообщений: 282

Сотрудник СВД ВС


WWW
« : 14 Ноябрь, 2018, 11:56:47 »

Работа с CMake-проектами в QNX Momentics IDE

В настоящее время во многих программных продуктах (приложениях, библиотеках) задача подготовки проекта к сборке бинарных компонентов решается с помощью инструментария CMake. Для того, чтобы эффективно использовать возможности интегрированной среды разработки QNX Momentics IDE при работе с такими проектами (например, в процессе адаптации какого-либо ПО под ЗОСРВ "Нейтрино" или QNX) необходимо предварительно выполнить интеграцию данного инструментария в IDE.

(щёлкните чтобы показать/скрыть)

В данной теме будет рассмотрен механизм интеграции с помощью промежуточного файла-сценария. Данный сценарий предназначен для преобразования действий, выполняемых при работе над проектом (в т.ч. команд "Build project" и "Clean project"), в вызовы инструментария CMake (при этом преобразование производится в фоновом режиме).

(щёлкните чтобы показать/скрыть)

Преимущества данного подхода:
  • отсутствие необходимости в дополнительных компонентах среды разработки, возможность использования в Momentics 7.0 и 4.7
    (Примечание: вариант для 4.7 находится в процессе адаптации)
  • возможность использования файла-сценария как в графическом, так и в консольном режиме
  • расширяемость
Недостатки:
  • необходимость явного указания некоторых параметров проекта и поддержания их в актуальном состоянии
  • необходимость учитывать некоторые особенности используемой версии платформы Eclipse CDT

Последовательность настройки проекта "с нуля" (с комментариями)
(щёлкните чтобы показать/скрыть)

Создание проекта
Необходимо создать новый пустой проект: File -> New -> C++ Project -> Executable (Empty Project)
(Примечание: для проектов на языке C выбирается этот же вариант)
Toolchain: Linux GCC
(Примечание: выбор Toolchain не зависит от используемой инструментальной платформы, т.е. одинаков и для Linux, и для Windows)

Настройка проекта
Для корректной интерпретации содержимого CMake-проекта средой разработки (в т.ч. для навигации по заголовочным файлам, функциям и макроподстановкам при работе с исходным кодом), необходимо выполнить ряд предварительных действий по настройке проекта. В данном списке указаны пункты Свойств проекта (Project Properties), в которые необходимо внести изменения:
  • Resource -> Resource Filters (только для Momentics 7.0)
    Действие: Создать новый фильтр (кнопка Add Filter). Параметры фильтра: "Exclude all", "Folders", "All children (recursive)", "Name Matches: CMakeFiles", Case sensitive
    (щёлкните чтобы показать/скрыть)
  • C/C++ Build, закладка Builder Settings:
    Действие: для всех конфигураций (Debug, Release) необходимо:
    • снять отметку "Generate makefiles automatically"
    • указать Build directory как ${workspace_loc:/<имя_проекта>} (можно использовать кнопку Workspace... и выбрать соответствующий проект)
    (щёлкните чтобы показать/скрыть)
  • C/C++ Build, закладка закладка Refresh Policy (только для Momentics 7.0)
    Действие: добавить в перечень ресурсов ресурс с именем проекта (кнопка Add Resource...)
    (щёлкните чтобы показать/скрыть)
  • C/C++ Build -> Settings -> Binary Parsers
    Действие: Снять отметку "GNU Elf Parser", установить отметку "QNX Binary Parser"
    (щёлкните чтобы показать/скрыть)
  • C/C++ Build -> Discovery options (только для Momentics 4.7)
    TODO
  • C/C++ Build -> Environment
    Действие: Выбрать вариант All Configurations, добавить переменные (пары <имя>:<значение>):
    • CROSS_PREFIX:ntox86 (соответствует используемой целевой платформе: ntox86, ntoarmv7, ntoppc, ntomips)
    • CONFIGNAME:${ConfigName}
    • ROOTSUBDIR:пустое значение
    Режим: Append variables to native environment
    (щёлкните чтобы показать/скрыть)
  • C/C++ General-> Indexer
    Действие: Пункт Configure Workspace Settings -> Build configuration for the indexer, выбрать вариант "Use active build configuration"
    (щёлкните чтобы показать/скрыть)
    (щёлкните чтобы показать/скрыть)
  • C/C++ General-> Preprocessor Include Paths, Macros etc., закладка Providers
    • Действие: включить пункт CDT GCC Build Output Parser, снять отметку "Use global....", установить Compiler command pattern:
      Цитировать
      ((.*)[\\/])?(nto[^-]+-)((gcc)|([gc]\+\+))(\.exe)?
      (щёлкните чтобы показать/скрыть)
    • Включить пункт CDT GCC Built-in Compiler Settings, снять отметку "Use global....", установить Command to get compiler specs:
      Цитировать
      ${CROSS_PREFIX}-${COMMAND} ${FLAGS} -E -P -v -dD "${INPUTS}"
      (щёлкните чтобы показать/скрыть)

Создание целей (target'ов) (опционально)
Для более комфортной работы с проектом рекомендуется использовать механизм предустановленных целей (target'ов). Данный механизм позволяет оперативно осуществлять сборку проекта, удаление результатов предыдущих сборок, а также выполнять ряд других действий. На уровне файла-сценария GNUmakefile поддерживаются следующие цели:
  • cmake_execute: создание файлов построения проекта (Makefile-ов) с помощью CMake без последующего фактического построения приложения (выполняется запуск CMake с заданными параметрами)
  • cmake_build_all: полное (или последующее инкрементальное) построения проекта (выполняется запуск CMake c параметром --build)
  • cmake_cleanup: удаление каталога, в котором создаются файлы построения проекта и бинарные файлы для текущей активной конфигурации (см. свойства проекта, раздел C/C++ Build, пункт "Configurations")
  • Все остальные цели (all, clean, help и т.д.): интерпретируются согласно файлам Makefile данного проекта, автоматически созданным на этапе выполнения cmake_execute или cmake_build_all.

Для создания и последующего быстрого запуска целей рекомендуется использовать следующие инструменты:
  • В Momentics 7.0: Window -> Show View -> Build Targets
    (в Momentics 7.0 цели также доступны в дереве самого проекта в разделе "Build Targets")
  • В Momentics 4.7: Window -> Show View -> Make Targets

Подготовка к работе
Для начала работы в настроенный проект необходимо скопировать или импортировать:
  • файл-сценарий GNUmakefile (в корневой каталог проекта).
  • файлы исходного кода и файл CMakeLists.txt (описание проекта на языке CMake).

Если "исходники" и CMakeLists.txt находятся в каталоге, отличном от каталога верхнего уровня, то необходимо в свойствах проекта установить значение переменной ROOTSUBDIR (см. выше), соответствующее имени этого каталога (напр. ROOTSUBDIR=expat-2.2.6 для библиотеки libexpat 2.2.6, архив которой содержит все файлы (включая CMakeLists.txt) в каталоге /expat-2.2.6).

Работа с проектом
Далее работа с проектом осуществляется любым из доступных способов:
  • Инструменты Build Targets/Make Target
  • "Горячие клавиши" (напр. Ctrl-B для сборки проекта)
  • Через свойства проекта (пункты Build Project и Clean Project)
  • Иконка "Build" на Панели запуска.

Скачать
Ссылка для скачивания архива с подготовленным проектом (предварительно необходимо нажать кнопку "Спасибо" или оставить комментарий в данной теме):




Вопросы, пожелания и замечания
Вопросы, пожелания и замечания по данному проекту можно оставлять в этой теме.
« Последнее редактирование: 15 Ноябрь, 2018, 13:35:59 от Игорь Рондарев » Записан

Андрей Ивлев
Опытный пользователь

Сообщений: 138



« Ответ #1 : 14 Ноябрь, 2018, 12:09:24 »

Спасибо.
Записан
Zanozus
Интересующийся

Сообщений: 2


« Ответ #2 : 17 Январь, 2020, 11:09:40 »

При попытке выполнения сценариев выдается ошибка несоответствия версии cmake (в файле CMakeLists.txt указана версия не ниже 3.7).

Версия 3.7 строго обязательна или это чистая формальность ? Могу я понизить требования до версии 3.5.1 или лучше обновиться ?
Записан
Flanker
Интересующийся

Сообщений: 2


« Ответ #3 : 06 Май, 2020, 15:30:30 »

Спасибо
Записан
yujin
Пользователь

Сообщений: 13


« Ответ #4 : 16 Ноябрь, 2020, 09:09:15 »

Здравствуйте! Ide 4.7, Cmake 3.18. При импорте CMakeEmptyProject_0.94_...zip возникает Creation Problems: Path for project must have only one segment.
С чем это может быть связано и как это обойти?
Записан
yujin
Пользователь

Сообщений: 13


« Ответ #5 : 16 Ноябрь, 2020, 10:29:20 »

Добавлю, что мне удалось создать рабочий пример вручную(для ide 4.7) за несколькими исключениями:
1. Снять отметку "Generate makefiles automatically" можно только в Makefile project:Empty Project! Т.е. в Executable:Empty Project данное поле недоступно для редактирования(серый шрифт).
2. Не нашел пункт CDT FCC build, как и закладку Providers и меню Preprocessor Include path..
Проект(файлы брал из  CMakeEmptyProject_0.94_...zip) собирается и на выходе генериться testapp!
Только вот momentics не видит исполняемый файл! И при отладке приходиться вручную , через менеджер файлов(Browse) , указывать исполняемый файл! Можно ли это исправить?
Записан
Игорь Рондарев
Модератор
Опытный пользователь

Сообщений: 282

Сотрудник СВД ВС


WWW
« Ответ #6 : 16 Ноябрь, 2020, 10:55:37 »

Добавлю, что мне удалось создать рабочий пример вручную(для ide 4.7) за несколькими исключениями:
1. Снять отметку "Generate makefiles automatically" можно только в Makefile project:Empty Project! Т.е. в Executable:Empty Project данное поле недоступно для редактирования(серый шрифт).
2. Не нашел пункт CDT FCC build, как и закладку Providers и меню Preprocessor Include path..
Проект(файлы брал из  CMakeEmptyProject_0.94_...zip) собирается и на выходе генериться testapp!
Только вот momentics не видит исполняемый файл! И при отладке приходиться вручную , через менеджер файлов(Browse) , указывать исполняемый файл! Можно ли это исправить?
Добрый день! Уточните, пожалуйста, какая операционная система используется (Windows, Linux, версия/дистрибутив), а также полное имя (от "корня") Workspace, в который не удаётся импортировать проект.
Записан

yujin
Пользователь

Сообщений: 13


« Ответ #7 : 16 Ноябрь, 2020, 11:32:10 »

исправить?
Добрый день! Уточните, пожалуйста, какая операционная система используется (Windows, Linux, версия/дистрибутив), а также полное имя (от "корня") Workspace, в который не удаётся импортировать проект.
Добрый день! Windows 7, sdpqnx650+kit_2016_for_win32_generic_20200630_b1276.
C:/qnx650/workspace, проект для импорта лежит в c:/qnx650/workspace(так же пробовал класть архив в c:/qnx650).
Записан
yujin
Пользователь

Сообщений: 13


« Ответ #8 : 16 Ноябрь, 2020, 11:36:36 »

Добавлю: при разборке cMakeLists.txt под momentics ide4.7 выбирается ветка if(WIN32)...endif()!!! Можно ли в настройках проекта или gnumakefile исправить это? Или как-то определить флаг qnx?!
Записан
Vitaliy_surgut
Интересующийся

Сообщений: 2


« Ответ #9 : 05 Июль, 2023, 12:47:25 »

Спасибо.
Записан
Silva
Интересующийся

Сообщений: 5


« Ответ #10 : 17 Февраль, 2024, 20:23:53 »

Спасибо
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2024 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 17 Апрель, 2024, 03:14:27