xt-sdk 文档 v1.0.3
xt-sdk 嵌入式 SDK API 参考
载入中...
搜索中...
未找到
app-with-components

平台 目标
windows simulator

演示应用工程如何带上自己的组件目录,并在构建时与 SDK 组件一起参与解析。

预期行为

当前示例中,用户工程里的依赖关系如下:

graph BT
    xt_sdk_platform[xt_sdk_platform\n 平台最终入口]
    app[app\n 平台产物 target]
    xt_main[xt_main\n 用户主组件]
    b[b\n 用户组件]
    a[a\n 用户组件]
    c[c\n 用户组件]

    xt_sdk_platform --> app
    app --> xt_main
    xt_main --> b
    b --> a
    c --> a

    xt_main -. 未依赖 .-> c

其中:

  • xt_main 在 xmake.lua 中显式 add_deps("b") 。
  • b 在 components/b/xmake.lua 中显式 add_deps("a") 。
  • c 已经被声明为一个组件 target,但当前没有被任何其他 target 依赖。

在当前配置下:

  • a 、 b 会因为依赖链被实际编译。
  • c 虽然存在 components/c/xmake.lua ,但因为没有被依赖,不应该被实际编译 。

也就是说,默认构建时应当只有依赖链上的 target 参与构建;仅仅"扫描到了组件目录"并不意味着该组件应该产生产物。

重点验证 c 是否被实际编译

验证这个示例时,请重点检查:

  • 构建日志里是否出现了 c 的编译/归档动作。
  • 构建产物目录里是否生成了 c.lib 、 c.a 、 c.o 、 c.obj 等与 c 相关的产物。

预期结果:在没有给 xt_main 增加 add_deps("c") 的前提下, c 不应该被实际编译。

如果你观察到 c 仍然被编译,说明当前组件默认参与构建的行为还有问题,需要继续检查 target 默认构建策略是否正确。

编译和运行

cd examples/build_system/app_with_components
xt --target windows/simulator fullclean build

注意事项

  • 如果在 xmake.lua 中显式 add_deps("c") ,那么 c 应当随着依赖链一起参与构建,此时再生成 c 的相关产物才是符合预期的。