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