cli.amalgamate
- 合并成单源码文件
这是一个小工具模块,主要用于快速合并指定 target 里面的所有 c/c++ 和 头文件源码到单个源文件。
合并会将内部 includes 头文件全部展开,并生成 DAG,通过拓扑排序引入。
默认它会处理所有 target 的合并,例如:
sh
$ xmake l cli.amalgamate
build/tbox.c generated!
build/tbox.h generated!
我们也可以指定合并需要的目标:
sh
$ xmake l cli.amalgamate tbox
build/tbox.c generated!
build/tbox.h generated!
也可以在合并每个源文件时候,指定一个自定义的 unique ID 的宏定义,来处理符号冲突问题。
sh
$ xmake l cli.amalgamate -u MY_UNIQUEU_ID
build/tbox.c generated!
build/tbox.h generated!
如果多个源文件内部有重名符号,就可以判断这个 MY_UNIQUEU_ID
宏是否被定义,如果定义了,说明是在单文件中,就自己在源码中处理下重名符号。
c
#ifdef MY_UNIQUEU_ID
// do some thing
#endif
我们也可以指定输出位置:
sh
$ xmake l cli.amalgamate -o /xxx
/xxx/tbox.c generated!
/xxx/tbox.h generated!