Особенности работы с проектами, не использующими сборочные системы CMake и qmake.
В данной статье-инструкции будет продемонстрирована работа с проектом, построенным на базе рекурсивной сборочной системы ЗОСРВ "Нейтрино", с помощью графической среды разработки Qt Creator редакции КПДА. Аналогичный подход может быть применён и для других проектов, в т.ч. использующих нестандартные или самостоятельно разработанные файлы Makefile.
![]() | Желательно наличие общего представления о принципах сборки проектов с помощью утилиты make, а также о синтаксисе файлов Makefile и common.mk, используемых в рекурсивной сборочной системе. |
В качестве примера будет использована утилита pci-attach из открытого репозитория https://git.kpda.ru/utils/hw (репозиторий содержит исходный код некоторых вспомогательных утилит для работы с оборудованием в ЗОСРВ "Нейтрино").
$ git clone https://git.kpda.ru/utils/hw.git utils-hw
![]() | Механизмы удалённого запуска и отладки приложений доступны только в составе Qt Creator редакции КПДА, входящего в Комплект Разработчика редакции 2021 (обновление от марта 2024 года и более поздние). |
"Создать проект -> Импортировать проект -> Импорт существующего проекта"
)
![]() | Имя проекта выбирается произвольно и может не совпадать с именем каталога, содержащего файлы исходного кода. |
Ключевые моменты:
common.mk
, т.к. он может содержать информацию, полезную в дальнейшей работе над проектом (например, дополнительные макроопределения, флаги компилятора, пути к заголовочным файлам и т.д.).
![]() | Проект может быть настроен под произвольное количество Комплектов (целевых платформ), но для начала рекомендуется выполнить пошаговую настройку под какой-то один комплект (например, для платормы x86 ). |
![]() | При использовании режима "импорт существующего проекта" настройки Комплектов важны, в первую очередь, для получения средой разработки корректного перечня архитектурно-специфичных макроопределений компилятора и путей к заголовочным файлам. Эти данные в дальнейшем будут использоваться редактором исходного кода для подсветки блоков кода, организации быстрого перехода к местам определения переменных, макросов и т.д. Также выбор комплекта определяет, какой именно исполняемый файл отладчика (т.е. для какой целевой системы) использовать в режиме отладки приложения. При этом настройки комплекта (в частности, значения, выбранные в разделе "Компилятор") не влияют на то, какой именно компилятор будет использован при сборке проекта; явное указание версии компилятора может осуществляется только через параметры вызова команды make (см. пункт 8). |
Для каждого выбранного в п.7 Комплекта необходимо уточнить перечень параметров, используемых при вызове утилиты make при построении ("make all"
) или очистке ("make clean"
) проекта для соответствующей целевой платформы. Необходимые изменения вносятся в подразделы "Сборка, этапы -> Сборка -> Параметры make"
и "Очистка, этапы -> Сборка -> Параметры make"
в меню настроек Комплектов:
![]() | Возможный список параметров определяется особенностями проекта и используемой сборочной системой (более подробная информация по параметрам рекурсивной сборочной системы доступна в соответствующем разделе Документации). |
Примеры значений поля "Параметры make"
для Комплектов различных целевых платформ:
Дополнительные примеры:
![]() | В случае явного переопределения версии компилятора через параметры make настоятельно рекомендуется выбрать компилятор аналогичной версии и в свойствах Комплекта (чтобы параметры сборки соответствовали параметрам отображения исходного кода в Редакторе). |
Что необходимо сделать:
"Развёртывание"
: "Заменять данные развёртывания системы сборки"
. "Добавить"
и заполнить поля "Путь к локальному файлу"
(должен содержать абсолютный путь к исполняемому файлу на инструментальной системе) и "Внешний каталог"
(каталог на целевой системе, в который будет загружен исполняемый файл). "Загрузка"
"Конфигурация запуска"
выбрать значение "Приложение для ЗОСРВ "Нейтрино""
. "Сменить программу на устройстве"
установить отметку "Использовать эту команду"
и указать в нём абсолютный путь к исполняемому файлу на целевой системе. "Программа на машине"
указать абсолютный путь к исполняемому файлу на инструментальной системе (требуется для работы отладчика).
![]() | Вариант конфигурации запуска "Особая программа", предлагаемый средой разработки по умолчанию, при разработке приложений для ЗОСРВ "Нейтрино" не используется, поэтому его рекомендуется удалить с помощью соответствующей кнопки ("Удалить"). |
Результат:
![]() | Среда разработки автоматически загрузит файлы, перечисленные в разделе "Развёртывание", на целевую систему; копировать их вручную не требуется. |
![]() | Предварительно убедитесь, что в настройках выбранного Комплекта указан профиль устройства, соответствующий целевой системе, на которой предполагается запустить приложение. Если профиль устройства ещё не создан, добавьте его (см. пункт "Настройка конфигурации целевой системы" Документации. |
Результат запуска:
Варианты создания отладочной версии компонентов проекта:
"CCFLAGS+=-g"
в параметры вызова утилиты make (см. Настройки сборки -> "Создать копию") "CCFLAGS += -g"
в конец файла common.mk
проекта pci-attach. ".g"
. Пример: "nto/x86/o.g"
. В рамках данного примера выбран первый вариант (создана отдельная конфигурация под названием "Отладочная"):
![]() | После внесения изменений в конфигурацию необходимо пересобрать проект и обновить файлы на целевой системе (выполнить операцию "Развернуть" ). |
Для простоты можно воспользоваться пунктом "Отладка -> Запустить и встать на Main"
главного меню, чтобы среда разработки автоматически остановилась в начале функции main() приложения pci-attach.
Для того, чтобы Редактор среды разработки учитывал дополнительные параметры компилятора, макросы и т.д. (в случае их наличия в файле common.mk
или других файлах сборочной системы), необходимо внести именения в соответствущие конфигурационные файлы проекта:
Данные файлы (пустые или с минимальным содержимым) автоматически создаются средой разработки в процессе импорта проекта. Их назначение:
<имя_проекта>.cflags
и <имя_проекта>.cxxflags
- здесь можно указать дополнительные флаги компилятора; например, явное указание используемого стандарта языка C или C++ (напр. -std=...), если он отличается от используемого компилятором по умолчанию, чтобы Редактор кода лучше адаптировался к его (стандарта) особенностям. <имя_проекта>.config
- для дополнительных макроопределений (например, макроопределение MYVAR, устанавливаемое в файле common.mk конструкциями вида CCFLAGS += -DMYVAR=123
, здесь нужно продублировать явно в виде #define MYVAR 123
). <имя_проекта>.files
- список файлой, отображаемые в дереве проекта (см. пункт 4). Можно оперативно добавить или убрать файлы из списка отображения в составе проекта. <имя_проекта>.includes
- дополнительные пути к заголовочным файлам (здесь, например, можно перечислить пути, содержащиеся в переменной EXTRA_INCVPATH
в файле common.mk
, если она используется, для более точной и полноценной навигации по файлам исходного кода проекта).
Предыдущий раздел: Графическая среда разработки Qt Creator (редакция КПДА)