Пиков / КАПО
Как читать авторский курс и нормативные материалы

Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.

CMake

Контекст CMake — не пакетный менеджер, а генератор сборочных систем: из CMakeLists.txt он создаёт нативные сборочные файлы (Ninja, Make, проекты Visual Studio). Для SCA это означает, что CMake описывает намерение слинковать цели и найти библиотеки, но сам по себе не гарантирует ни версию, ни факт линковки.

Для чего

CMake разрешает, какие библиотеки нужны цели (find_package, target_link_libraries), куда смотреть за заголовками, и каким компилятором собирать. В контексте инвентаризации C/C++ он ценен как источник декларации зависимостей и как точка, где можно снять граф целей и перехватить реальные вызовы компилятора (через compile_commands.json).

Как применяют

Граф зависимостей целей в формате Graphviz:

cmake -S . -B build --graphviz=deps.dot
dot -Tsvg deps.dot -o deps.svg

База реальных команд компиляции (вход для build‑scan и cdxgen):

cmake -S . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON   # → build/compile_commands.json

Машинная модель проекта через CMake File API (каталог‑запрос .cmake/api/v1/query/) отдаёт JSON с целями, ссылками и путями к библиотекам — это надёжнее, чем парсить CMakeLists.txt глазами.

Сильные стороны

Ограничения

Offline / on-premise

Да. CMake — локальный инструмент без сетевых зависимостей. Сетевые риски вносят не сам CMake, а вызовы FetchContent_Declare(... GIT_REPOSITORY ...)/ExternalProject, тянущие код из интернета во время конфигурации; в закрытом контуре их перенаправляют на внутренние зеркала или заменяют vendored‑исходниками.

Связанные темы

М09 C/C++ legacy · М05 Генерация SBOM · П20. CMake dependency graph · П19. C C++ make build inventory · П31. Пилот CodeScoring make CMake qmake · Conan · vcpkg · pkg-config · cdxgen