-
最近正在研究xmake源码,根据文档和源码,在AI的辅助下总结了xmake的准备(Prepare)阶段的执行流程和脚本优先级。我将我总结出的内容和一些疑问在Discussion这里,希望社区能够帮忙review下看看有没有什么错误,并且解答一些疑惑 执行流程graph TB
begin_prepare([Prepare Begins])
before_prepare["before_prepare[cmd]"]
on_prepare_override["Overrided on_prepare[cmd]"]
subgraph on_prepare_builtin ["Builtin on_prepare"]
direction TB
on_prepare_start@{ shape: fork, label: "Fork or Join" }
before_prepare_file["before_prepare[cmd]_file"]
before_prepare_files["before_prepare[cmd]_files"]
on_prepare_file["on_prepare[cmd]_file"]
on_prepare_files["on_prepare[cmd]_files"]
after_prepare_file["after_prepare[cmd]_file"]
after_prepare_files["after_prepare[cmd]_files"]
on_prepare_end@{ shape: fork, label: "Fork or Join" }
on_prepare_start --"on_prepare_files Not Specified"--> before_prepare_file --> on_prepare_file --> after_prepare_file --> on_prepare_end
on_prepare_start --"on_prepare_files Specified"--> before_prepare_files --> on_prepare_files --> after_prepare_files --> on_prepare_end
end
after_prepare["after_prepare[cmd]"]
end_prepare([Prepare Ends])
begin_prepare --> before_prepare
before_prepare --"on_prepare overrided"--> on_prepare_override
before_prepare --"use builtin on_prepare"--> on_prepare_start
on_prepare_end --> after_prepare
on_prepare_override ----> after_prepare
after_prepare --> end_prepare
优先级
关于Source batch根据文档推断,source batch应该是以rule为单位而不是以 泛用性这一套覆盖的逻辑是否能够同样应用在 |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
target 的优先级最高,on_prepare/on_build 会完整重写内置的实现
on_ 的都会覆盖
只有 on_ 会覆盖
target 优先执行,rule 里面未定义,除非你指定了 add_orders 控制了顺序
对于编译,优先 on_prepare/on_build, 没有才会 fallback 到 on_preparecmd/on_buildcmd batchcmd 主要是给 project generator 用的,串行的,对于 project generator ,只会处理 batchcmd
包含关系,有 _files ,优先用,忽略 _file ,没有 _files,会 fallback 挨个处理 _file |
Beta Was this translation helpful? Give feedback.
target 的优先级最高,on_prepare/on_build 会完整重写内置的实现
on_ 的都会覆盖
只有 on_ 会覆盖
target 优先执行,rule 里面未定义,除非你指定了 add_orders 控制了顺序
对于编译,优先 on_prepare/on_build, 没有才会 fallback 到 on_preparecmd/on_buildcmd
batchcmd 主要是给 project generator 用的,串行的,对于 project generator ,只会处理 batchcmd