组件

组件封装了与特定目标相关的所有代码。组件充当单独的编译目标。这使得 CMake 能够高效地并行化编译和链接阶段。组件应包含最少的依赖项。应避免循环依赖。

核心组件

通用接口可以在项目和多个组件中使用。这些接口在 components/core 中定义。核心是唯一不完全遵循组件模式的组件。核心与其他组件之间的唯一主要区别在于使用的头文件前缀是 core/<子目录> 而不是 components/core/<子目录>

有关详细信息,请参阅核心文档

创建新组件

要创建新组件,请在 components/ 下添加新文件夹。文件夹名称应与组件的实现相关 - 请参阅当前的组件以获取灵感。接下来的说明将在 components/<组件名称> 文件夹内执行。

  1. 创建一个名为 include/components/<组件名称> 的目录。这将包含其他组件可以访问的所有公共头文件

  2. 创建一个名为 src 的目录。这将包含所有私有头文件和源文件。组件将无法包含这些。

  3. 创建一个名为 tests 的目录。这将包含此组件的所有测试文件

  4. 创建一个 CMakeLists.txt

添加组件编译目标

注册组件会添加 vkb__<组件名称> 编译目标。此目标也作为依赖项链接到 vkb__components

vkb__register_component(
    NAME <component_name>
    SRC
        src/<some_private_header>.hpp
        src/<some_source>.cpp
    LINK_LIBS
        <some_link_lib>
)

添加测试

注册测试会添加 tests__<测试名称> 编译目标。此目标也作为依赖项链接到 vkb__tests

vkb__register_tests(
    NAME <test_name>
    SRC
        tests/<some_test>.test.cpp
    LINK_LIBS
        <some_link_libs>
)

编译组件

  • 要编译所有组件,请使用 --target vkb__components 运行 cmake

  • 要编译特定组件,请使用 --target vkb__<组件名称> 运行 cmake

  • 要编译所有测试,请使用 --target vkb__tests 运行 cmake

  • 要编译特定测试,请使用 --target tests__<测试名称> 运行 cmake。