Особенности работы с проектами, не использующими сборочные системы 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 (редакция КПДА)