CMake SBOM-generatie: een gelaagd 3D-buildblok dat op ondiepe en diepe niveaus wordt gescand en een software bill of materials oplevert.

Hoe genereer je in 2026 een SBOM uit een CMake-build - CMakes nieuwe native SBOM-ondersteuning, open-source-modules, binaire analyse en build-bewuste generatie vergeleken, met wat elke aanpak vastlegt en mist.

Vier manieren om een SBOM uit een CMake-build te halen

Er zijn vier manieren om een Software Bill of Materials (SBOM) uit een CMake-project te halen, en elke leest een ander deel van je build. CMake biedt nu native, experimentele SBOM-generatie rechtstreeks uit zijn build-graph. Je kunt daarnaast open-source-modules toevoegen, binaire analyse op het uiteindelijke image uitvoeren, of build-bewuste generatie gebruiken die na de build de werkelijke compiler- en linker-aanroepen leest die je build voortbrengt.

Deze gids beschrijft wat elke aanpak ziet en waar hij ophoudt. Bij embedded systemen en firmware zitten kritieke componenten vaak in de dode hoek van de gebruikelijke build-graph-tools.

Het korte antwoord

CMake kan een SBOM native uit zijn build-graph genereren, wat de snelste start is voor projecten die volledig in CMake worden gebouwd. De build-graph mist echter meegeleverde broncode (vendored source), voorgecompileerde statische bibliotheken en vendor-SDK's. Open-source-modules delen die grenzen. Binaire analyse inspecteert het eindresultaat, maar leunt op afgeleide identiteiten. Build-bewuste generatie leest na de build de compiler- en linker-aanroepen van de echte build, zonder opnieuw te bouwen, en bewaart bewijs per component. Kies de aanpak die elke laag van je uitgeleverde binary dekt.

Wat CMakes native SBOM doet

CMake bevat experimentele SBOM-generatie die documenten rechtstreeks opbouwt uit zijn afhankelijkheidsgraaf voor compileren en linken. Wanneer je die tijdens de configuratie inschakelt, geeft ze SPDX-documenten uit voor de door CMake opgeloste targets. Omdat ze interne target-structuren leest in plaats van ruwe bestanden te scannen, draait ze snel en plaatst ze first-party targets netjes naast de door CMake opgeloste afhankelijkheden.

CMAKE_EXPERIMENTAL_GENERATE_SBOM
install(SBOM ...) / export(SBOM ...) -> SPDX 3.0.1
CMAKE_EXPERIMENTAL_GENERATE_SBOM
install(SBOM ...) / export(SBOM ...) -> SPDX 3.0.1
CMAKE_EXPERIMENTAL_GENERATE_SBOM
install(SBOM ...) / export(SBOM ...) -> SPDX 3.0.1

Native SBOM-ondersteuning in CMake is experimenteel en volop in ontwikkeling. Raadpleeg de officiële CMake-documentatie om de actuele flag-namen en versiecompatibiliteit te bevestigen voordat je het in productie gebruikt.

Voor een nadere blik op de functie zelf, zie CMakes native SBOM-functie.

De vier aanpakken vergeleken

Hier zie je wat elke methode inspecteert, waar ze sterk is en waar ze tekortschiet.


Aanpak

Wat het leest

Legt goed vast

Mist

Het best wanneer

Native CMake SBOM (experimenteel)

CMake-build-graph

First-party targets en door CMake opgeloste afhankelijkheden. Snel, zonder externe tools

Meegeleverde bronbestanden zonder target, voorgecompileerde statische bibliotheken, vendor-SDK's

Je project wordt volledig via CMake-targets gebouwd en heeft een snelle, standaardconforme start nodig

Open-source-CMake-modules (bijv. community-cmake-sbom)

CMake-projectbestanden via toegevoegde scripts

Aanpasbare uitvoerformaten, afgestemd op bestaande CMake-workflows

Dezelfde build-graph-grenzen; vereist handmatig onderhoud

Je wilt volledige scriptcontrole en de integratie zelf beheren

Binaire / firmware-analyse

Gecompileerde binaries en firmware-images

Componenten die fysiek in de uitgeleverde binary aanwezig zijn

Exacte componentversies en bron-herkomst; de identiteit wordt afgeleid en is onbetrouwbaar bij gestripte builds

Je hebt alleen toegang tot gecompileerde binaries, of moet uiteindelijke images verifiëren

Build-bewuste generatie (lynkctl)

De compiler- en linker-aanroepen die je build voortbrengt, plus het artefact (na de build, zonder opnieuw te bouwen)

Meegeleverde broncode, statische archieven en vendor-SDK's met bewijs op broncodeniveau

Vereist commerciële tooling (gratis niveau beschikbaar)

Je levert gereguleerde of embedded firmware en hebt auditklaar bewijs nodig

Deze methoden vullen elkaar aan. Engineeringteams beginnen vaak met de native CMake-uitvoer en voegen build-bewuste generatie toe zodra SDK's van derden en statische bibliotheken in beeld komen.

Waar elke aanpak ophoudt

Embedded builds bestaan uit meerdere lagen, en diepere lagen liggen vaak buiten de build-graph van CMake:

  1. Pakketbeheer-manifesten (Conan, vcpkg): Zichtbaar voor alle vier de aanpakken.

  2. CMake-build-targets: Native CMake en open-source-CMake-modules reiken tot hier.

  3. Meegeleverde broncode (vendored source): Build-bewuste generatie legt deze laag vast; graafgebaseerde methoden missen haar.

  4. Voorgecompileerde statische archieven (.a / .lib): Build-bewuste tools leggen deze rechtstreeks vast; binaire analyse leidt hun identiteit af.

  5. Silicon-vendor-SDK's (ST, NXP, TI, Renesas): Build-bewuste tools volgen aangepaste SDK-bronnen; andere methoden missen ze.

  6. Uiteindelijk firmware-image: Binaire analyse leest de gecompileerde bytes; build-bewuste tools herleiden die bytes naar de broncode.

Hoe dieper een laag zit, hoe minder zichtbaar ze is voor de CMake-graph. Lees onze uiteenzetting over waarom SBOM's voor C/C++ lastig zijn om deze zichtbaarheidshiaten in detail te begrijpen.

Een uitgewerkt voorbeeld

We hebben een echte Trusted-Firmware-M-build op een STM32H5-MCU via CMake tot een SBOM verwerkt en vastgelegd wat elke laag naar boven bracht. Lees de stapsgewijze uitleg in Trusted Firmware-M op een STM32H5.

Wanneer welke aanpak

  • Zuivere CMake-toepassingen: Gebruik native CMake-SBOM-generatie. Ze dekt wat je compileert en vereist minimale installatie.

  • Firmware met vendor-SDK's of statische bibliotheken: Gebruik build-bewuste generatie. Het volgen van kwetsbaarheden vereist zicht op componenten onder de CMake-target-graaf.

  • Uitgeleverde binaries zonder build-toegang: Gebruik binaire analyse om componenten in het gecompileerde image te vinden, en behandel versienummers als afgeleid totdat je een build-bewuste doorloop uitvoert.

Hoe Interlynk hierin past

Interlynks generator lynkctl werkt build-bewust. Hij draait na je bestaande Make-, CMake-, IAR- of TI-Code-Composer-build, zonder opnieuw te bouwen, en leest de werkelijke compiler- en linker-aanroepen. Zo legt hij de meegeleverde code, statische archieven en silicon-SDK's vast die louter graafgebaseerde tools missen. Hij legt bewijs op componentniveau vast, tot aan het bronbestand, de compile-regel en een betrouwbaarheidsniveau, zodat beveiligingsbeoordelaars kunnen nagaan waarom elke vermelding in het manifest staat. Hij draait in air-gapped omgevingen en levert de formaten CycloneDX 1.6+ en SPDX 3.0+. Bekijk de C/C++ SBOM-generator voor embedded software. Voor teams die naar gereguleerde markten leveren, sluit lynkctl rechtstreeks aan op FDA 524B en de EU Cyber Resilience Act.

Veelgestelde vragen

Kan CMake zelf een SBOM genereren?

Ja. Via recent toegevoegde experimentele functies geeft CMake SPDX-SBOM's rechtstreeks uit zijn build-graph uit tijdens configuratie en installatie. Het dekt interne targets en door CMake opgeloste afhankelijkheden, dus controleer of het je meegeleverde code en statische bibliotheken vastlegt voordat je het voor compliance gebruikt.

Wat mist CMakes native SBOM?

Het mist componenten buiten de target-build-graaf, waaronder broncode die rechtstreeks in de boom is gekopieerd, voorgecompileerde statische bibliotheken en silicon-vendor-SDK's. Omdat embedded firmware sterk op deze onderdelen leunt, combineren teams CMake regelmatig met build-bewuste tools.

CycloneDX of SPDX voor een CMake-project?

Beide formaten werken in deze workflows. CMake genereert SPDX native, terwijl lynkctl zowel CycloneDX 1.6+ als SPDX 3.0+ uitvoert. Kies het formaat dat je nagelegen scanners of toezichthouders vereisen.

Hoe genereer ik een SBOM voor firmware die met IAR- of TI-toolchains is gebouwd?

Een build-bewuste generator leest de compiler- en linker-aanroepen van IAR-Embedded-Workbench- en TI-Code-Composer-builds nadat ze zijn uitgevoerd, zonder CMake te vereisen. Lees meer over de C/C++ SBOM-generator voor embedded software.

Zijn er gratis opties?

De native CMake-SBOM-functie en community-CMake-modules zijn gratis te gebruiken. Interlynk biedt bovendien een gratis niveau. Begin met de gratis aanpak die bij je build-omgeving past en voeg build-bewuste generatie toe wanneer je SDK's van derden en statische bibliotheken moet auditen.

Verder lezen

Voor een overzicht van het bredere ecosysteem, lees onze gids over de beste SBOM-tools.

Vertrouwd door beveiligings- en complianceteams bij meer dan 100 gereguleerde bedrijven.

Zie uw SBOM zoals het hoort

Interlynk automatiseert SBOM's, beheert open source-risico's, monitort leveranciers en bereidt u voor op het post-quantumtijdperk – alles in één vertrouwd platform.

Vertrouwd door beveiligings- en complianceteams bij meer dan 100 gereguleerde bedrijven.

Interlynk automatiseert SBOM's, beheert open-sourcerisico's, monitort leveranciers en bereidt u voor op het post-quantumtijdperk, allemaal op één vertrouwd platform.

Audit-klare SBOM. Bij elke build.

Vertrouwd door beveiligings- en complianceteams bij meer dan 100 gereguleerde bedrijven.

Interlynk automatiseert SBOM's, beheert open-sourcerisico's, monitort leveranciers en bereidt u voor op het post-quantumtijdperk, allemaal op één vertrouwd platform.

Audit-klare SBOM. Bij elke build.