Официальный форум СВД Встраиваемые Системы
15 Декабря, 2018, 14:39:27 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

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

Сообщений: 166


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


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 от Игорь Рондарев » Записан

Андрей Ивлев
Пользователь

Сообщений: 85



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

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

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

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

В последний раз google посещал эту страницу 15 Ноября, 2018, 02:04:09