这样我们就可以依靠xmake的默认编译过程来编译自动生成的代码了,像这样:
add_rules("mode.debug", "mode.release") target("autogen_code") set_kind("binary") add_files("$(buildir)/autogen.cpp", {always_added = true}) before_build(function (target) io.writefile("$(buildir)/autogen.cpp", [[ #include <iostream> using namespace std; int main(int argc, char** argv) { cout << "hello world!" << endl; return 0; } ]]) end)都不需要额外的 rule 定义,只需要保证编译顺序,在正确的阶段生成代码文件就可以了。
但是,我们也需要注意,由于当前自动生成的源文件可能还不存在,我们不能在 add_files 里面使用模式匹配,只能显式添加每个源文件路径。
更新内容 新特性#1534: 新增对 Vala 语言的支持
#1544: 添加 utils.bin2c 规则去自动从二进制资源文件产生 .h 头文件并引入到 C/C++ 代码中
#1547: option/snippets 支持运行检测模式,并且可以获取输出
#1567: 新增 xmake-requires.lock 包依赖锁定支持
#1597: 支持编译 metal 文件到 metallib,并改进 xcode.application 规则去生成内置的 default.metallib 到 app
改进#1540: 更好更方便地编译自动生成的代码
#1578: 改进 add_repositories 去更好地支持相对路径
#1582: 改进安装和 os.cp 支持符号链接
Bugs 修复#1531: 修复 targets 加载失败的错误信息提示错误