Как читать авторский курс и нормативные материалы
Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.
qmake
Контекст qmake — исторический сборочный инструмент Qt, управляемый файлами проекта
*.pro. В Qt6 он считается унаследованным и вытеснен CMake, но огромный объём legacy‑кода на C++ всё ещё собирается именно qmake. Для SCA это типичный «слепой» случай: декларации зависимостей минимальны, а список реально слинкованных библиотек выводится из переменныхLIBS/QT, а не из манифеста с версиями.
Для чего
qmake генерирует Makefile (или проекты для IDE) из *.pro: определяет, какие модули Qt (QT += core gui network) и какие внешние библиотеки (LIBS += -lssl -lcrypto) подключаются к цели, какие пути к заголовкам используются. Это даёт декларацию подключаемых библиотек, но без версий и без устойчивого ключа компонента.
Как применяют
Сгенерировать сборочные файлы и затем перехватить реальные вызовы компилятора:
qmake project.pro
make # либо: qmake -d для дампа разбора .pro
Прочитать декларации зависимостей прямо из *.pro:
QT += core network sql
LIBS += -L/usr/local/lib -lssl -lcrypto -lz
INCLUDEPATH += /opt/thirdparty/include
Здесь видно «что подключают» (-lssl, -lcrypto, -lz, модули Qt), но не «какой версии» — версию приходится снимать с готового бинаря (ldd/readelf -d) или сопоставлять с системными пакетами.
Сильные стороны
*.proкомпактен и читается напрямую: переменныеLIBS,QT,INCLUDEPATHсразу показывают набор подключаемых библиотек.- Жёстко связан с экосистемой Qt — модули Qt из
QT += ...маппятся на конкретные пакеты Qt детерминированно. - Сгенерированный Makefile позволяет применить ту же технику build‑scan (перехват
g++), что и для обычного make‑проекта.
Ограничения
- Нет версий и нет lockfile:
-lsslне говорит ни о версии OpenSSL, ни о том, динамика это или статика. - Унаследованный статус в Qt6 — новые возможности и инструментарий идут в CMake; qmake‑проекты часто плохо документированы и содержат ручные хаки в
*.pri. - Условная логика (
unix:,win32:,CONFIG(debug)) ветвит набор зависимостей по платформе/конфигурации — статический разбор*.proбез знания профиля сборки даёт неполную картину.
Offline / on-premise
Да. qmake — локальный инструмент, не обращается в сеть и не имеет менеджера пакетов, который что‑то скачивает. Зависимости берутся из уже установленного Qt SDK и системных библиотек; в закрытом контуре достаточно офлайн‑дистрибутива Qt.
Связанные темы
М09 C/C++ legacy · П31. Пилот CodeScoring make CMake qmake · П19. C C++ make build inventory · П22. ELF dynamic dependencies · CMake · ldd readelf LIEF · pkg-config