cli.amalgamate
- Merge into single source file
This is a small utility module for quickly merging all c/c++ and header sources inside a given target into a single source file.
The merge expands all the internal includes headers and generates a DAG, which is introduced by topological sorting.
By default it will handle the merge of all targets, for example:
sh
$ xmake l cli.amalgamate
build/tbox.c generated!
build/tbox.h generated!
We can also specify the targets we need for the merge:
sh
$ xmake l cli.amalgamate tbox
build/tbox.c generated!
build/tbox.h generated!
You can also handle symbol conflicts by specifying a custom unique ID macro definition for each source file you merge.
sh
$ xmake l cli.amalgamate -u MY_UNIQUEU_ID
build/tbox.c generated!
build/tbox.h generated!
If there are renamed symbols in multiple source files, you can determine if the MY_UNIQUEU_ID
macro is defined, and if it is, then it is in a single file, so you can handle the renamed symbols yourself in the source code.
c
#ifdef MY_UNIQUEU_ID
// do some thing
#endif
We can also specify the output location:
sh
$ xmake l cli.amalgamate -o /xxx
/xxx/tbox.c generated!
/xxx/tbox.h generated!