跨平台命令行工具(Amalgamate),用于生成C或C ++源的合并成一个文件。
合并是仅使用几个文件(低至一个或两个)来分发库源代码的另一种方法。该工具通过内联包含的文件以创建一个或多个大型源文件或头文件来产生合并。
对于成熟的库(即不经常更改),合并后的发行格式通常更易于集成和更新。合并将作为附加源文件添加到现有项目,而无需由构建工具单独构建。以下是一些已合并的源代码库示例:
FreeType: http://github.com/vinniefalco/FreeTypeAmalgam
JUCE: http://github.com/vinniefalco/JUCEAmalgam
TagLib: http://github.com/vinniefalco/TagLibAmalgam
- 项目地址:
https://github.com/vinniefalco/Amalgamate
- 项目提供一个VS2010工程,Qt君使用VS2017也可以编译成功。
- 使用说明:
NAME
amalgamate - produce an amalgamation of C/C++ source files.
SYNOPSIS
amalgamate [-s]
[-w {wildcards}]
[-f {file|macro}]...
[-p {file|macro}]...
[-d {name}={file}]...
[-i {dir}]...
{inputFile} {outputFile}
DESCRIPTION
Produces an amalgamation of {inputFile} by replacing #include statements with
the contents of the file they refer to. This replacement will only occur if
the file was located in the same directory, or one of the additional include
paths added with the -i option.
Files included in angle brackets (system includes) are only inlined if the
-s option is specified.
If an #include line contains a macro instead of a string literal, the list
of definitions provided through the -d option is consulted to convert the
macro into a string.
A file will only be inlined once, with subsequent #include lines for the same
file silently ignored, unless the -f option is specified for the file.
OPTIONS
-s Process #include lines containing angle brackets (i.e.
system includes). Normally these are not inlined.
-w {wildcards} Specify a comma separated list of file name patterns to
match when deciding to inline (assuming the file can be
located). The default setting is "*.cpp;*.c;*.h;*.mm;*.m".
-f {file|macro} Force reinclusion of the specified file or macro on
all appearances in #include lines.
-p {file|macro} Prevent reinclusion of the specified file or macro on
subsequent appearances in #include lines.
-d {name}={file} Use {file} for macro {name} if it appears in an #include
line.
-i {dir} Additionally look in the specified directory for files when
processing #include lines.
-v Verbose output mode
- 使用示例
合并main.cpp内所有的#include "文件名字"
的内容到out.cpp中。(注意: 不合并#include <文件名字>
)
amalgamate main.cpp out.cpp
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。