DEMCON/cmake-sbom

GitHub: DEMCON/cmake-sbom

CMake自动化生成软件成分清单(SBOM)工具。

Stars: 60 | Forks: 9

.. _sec_sbom_add: |   #### sbom添加 向 SBOM 添加内容。 .. code:: cmake sbom_add( FILENAME FILETYPE [LICENSE ] [RELATIONSHIP ] [SPDXID ] ) ``FILENAME`` 要添加的文件。 它应该是从 ``CMAKE_INSTALL_PREFIX`` 的相对路径。 允许使用生成器表达式。 ``FILETYPE`` SPDX 文件类型。 参考 `SPDX 规范 `_。 .. _SPDX_filetype: https://spdx.github.io/spdx-spec/v2.3/file-information/#83-file-type-field ``LICENSE`` 文件的许可证。 未指定时默认为 ``NOASSERTION``。 ``RELATIONSHIP`` 与该文件相关的关联定义。 字符串 ``@SBOM_LAST_SPDXID@`` 将被替换为用于此 SBOM 项的 SPDXID。 参考 `SPDX 规范 `_。 .. _SPDX_rel: https://spdx.github.io/spdx-spec/v2.3/relationships-between-SPDX-elements/ ``SPDXID`` 用于标识符生成的 ID。 默认情况下,生成一个新的 ID。 无论是否指定,变量 ``SBOM_LAST_SPDXID`` 都设置为刚刚生成/使用的 SPDXID,这可以用于后续的关联定义。 .. code:: cmake sbom_add( DIRECTORY FILETYPE [LICENSE ] [RELATIONSHIP ] ) ``DIRECTORY`` 一个目录的路径,相对于 ``CMAKE_INSTALL_PREFIX``,其中所有文件都将递归地添加到 SBOM 中。 支持生成器表达式。 ``LICENSE`` 目录中文件的许可证。 未指定时默认为 ``NOASSERTION``。 .. code:: cmake sbom_add( TARGET [LICENSE ] [RELATIONSHIP ] [SPDXID ] ) ``TARGET`` 要添加的 CMake 目标。 假设目标在其默认位置安装,例如 ``CMAKE_INSTALL_BINDIR`` 和其他位置。 ``LICENSE`` 目标的许可证。 未指定时默认为 ``NOASSERTION``。 .. code:: cmake sbom_add( PACKAGE [DOWNLOAD_LOCATION ] [EXTREF ...] [LICENSE ] [RELATIONSHIP ] [SPDXID ] [SUPPLIER ] [COPYRIGHT ] [VERSION ] [COMMIT ] ) ``PACKAGE`` 要添加到 SBOM 的包。 名称应该是标准工具可以识别的名称,因此请使用作者或包管理器提供的名称。 包文件不会进一步分析;假设此包是项目的依赖项。 ``DOWNLOAD_LOCATION`` 包下载位置。 URL 可以由工具用于识别包。 ``EXTREF`` 外部引用,例如安全或包管理器信息。 参考 `SPDX `_ 规范以获取详细信息。 ``LICENSE`` 包的许可证。 未指定时默认为 ``NOASSERTION``。 ``SUPPLIER`` 包供应商,可以是 ``Person: name (email)`` 或 ``Organization: name (email)``。 ``COPYRIGHT`` 包的版权信息。 未指定时默认为 ``NOASSERTION``。 ``VERSION`` 包的版本。 ``COMMIT`` Git 提交哈希。 .. code:: cmake sbom_add( EXTERNAL FILENAME [RENAME ] [RELATIONSHIP ] [SPDXID ] ) ``EXTERNAL`` 外部文件中包的 SDPX 标识符。 ``FILENAME`` 引用另一个 SDPX 文件作为外部文档引用。 然后,依赖于该文档中命名的包。 外部 SDPX 文件将复制到 SBOM 旁边。 支持生成器表达式。 ``RENAME`` 将外部文档重命名为给定的文件名,不带目录。 ``SPDXID`` 外部文档的标识符,用作包标识符的前缀。 默认为唯一的标识符。 自动添加包标识符。 变量 ``SBOM_LAST_SPDXID`` 设置为使用的标识符。 .. code:: cmake sbom_add( LICENSE LicenseRef- [NAME ] [FILE | TEXT ] ) ``LICENSE`` ``LicenseRef-...`` 标识符。 ``NAME`` 许可证名称。 未指定时默认为 ``NOASSERTION``。 ``FILE`` 许可证文件。 默认为 ``${PROJECT_SOURCE_DIR}/LICENSES/``。 ``TEXT`` 许可证文本。 默认为 ``FILE`` 的内容。 .. _sec_sbom_finalize: |   #### sbom完成 最终确定 SBOM 并验证其内容/格式。 .. code:: cmake sbom_finalize( [NO_VERIFY | VERIFY] ) sbom_finalize( GRAPH ) ``NO_VERIFY`` 不要对生成的 SBOM 运行验证。 默认情况下,仅在找到具有适当包的 python3 时才执行验证。 ``VERIFY`` 始终对生成的 SBOM 运行验证。 请确保首先在您的 Python 环境中安装 ``dist/common/requirements.txt``。 ``GRAPH`` 生成 SBOM 的依赖关系图。 这意味着 ``VERIFY``。 需要首先安装 ``spdx-tools[graph_generation]`` Python 包。 .. _sec_reuse: |   ## 重用 本节列出了几个帮助实现 `REUSE`_ 仓库合规性的函数。 .. _sec_reuse_lint: |   #### 重用检查 对项目仓库源文件进行 `REUSE`_ 合规性检查。 .. code:: cmake reuse_lint( [TARGET ] [CONFIG] [ALL] ) ``TARGET`` 运行检查器的目标名称。 省略时默认为 ``${PROJECT_NAME}-reuse-lint``。 ``CONFIG`` 在 CMake 配置期间而不是在构建期间运行检查。 当此标志设置时,目标仍然会创建。 ``ALL`` 将 ``all`` 添加到 ``TARGET`` 的依赖项中。 .. _sec_reuse_spdx: |   #### 重用SPDX 根据项目的源代码以及版权和许可证信息导出 SPDX 文件。 .. code:: cmake reuse_spdx( [TARGET ] [OUTPUT ] ) ``TARGET`` 执行导出器的目标名称。 默认为 ``${PROJECT_NAME}-reuse-spdx``。 ``OUTPUT`` 输出的 SPDX 文件。 .. _sec_how_to_use: |   ## 如何使用 要使用此库,请执行以下步骤: 1. 将此仓库放在您的系统中的某个位置(例如,将其作为您的项目的 Git 子模块)。 2. 将 ``cmake`` 目录添加到您的 ``CMAKE_MODULE_PATH``。 例如,将以下内容添加到您的 ``CMakeLists.txt``: .. code:: cmake list(APPEND CMAKE_MODULE_PATH "path/to/cmake-sbom/cmake") 3. 可选:当您想验证生成的 SBOM 以符合 `NTIA`_ 规范时,请在您的 Python(虚拟)环境中安装 ``dist/common/requirements.txt``: .. code:: bash $ python3 -m pip install -r path/to/cmake-sbom/dist/common/requirements.txt 4. 可选:在您的顶级 ``CMakeLists.txt`` 中,通过以下方式确定您的软件版本: - 向您的 ``project(...)`` 传递一个 ``VERSION``;或 - 在 ``project(...)`` 之后但在 ``include(sbom)`` 之前调用 ``include(git_version)``(见下文)。 5. 在您的顶级 ``CMakeLists.txt`` 中,在 ``project(...)`` 之后某处准备 SBOM: .. code:: cmake include(sbom) sbom_generate(SUPPLIER you SUPPLIER_URL https://some.where) Add sbom_add() ... sbom_finalize() 6. 构建 *并安装* 您的项目,例如: .. code:: bash mkdir build cd build cmake .. cmake --build . --target all cmake --build . --target install SBOM 默认将生成在您的 ``CMAKE_INSTALL_PREFIX`` 目录中(另请参阅 CMake 输出)。 .. _sec_testing: |   ## 测试 为了测试目的,请转到 ``dist/``,运行 ``bootstrap`` 以安装系统依赖项,然后运行 ``build`` 以构建示例和所有测试。 当您只想在项目中使用此库时,不需要运行 bootstrap 和构建,如 `上面 `_ 所述。 .. _sec_license: |   ## 许可证 此仓库中的大部分代码都采用 MIT 许可证。 此项目符合 `REUSE`_。 .. _REUSE: https://reuse.software/
标签:Bash脚本, CMake, SPDX规范, TLS抓取, 代码生成, 关系定义, 安装路径, 数据管道, 文件类型, 构建系统, 渗透测试工具, 目录管理, 目标管理, 许可证管理, 软件供应链安全, 软件依赖管理, 软件发布, 软件可扩展性, 软件可测试性, 软件可移植性, 软件可维护性, 软件可追溯性, 软件可靠性, 软件合规性, 软件安全, 软件审计, 软件工程, 软件成分清单, 软件生命周期管理, 软件维护, 软件质量保证, 远程方法调用, 逆向工具