前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分享一个代码合并工具

分享一个代码合并工具

作者头像
Qt君
发布2019-11-30 21:27:10
1.1K0
发布2019-11-30 21:27:10
举报
文章被收录于专栏:跟Qt君学编程跟Qt君学编程

跨平台命令行工具(Amalgamate),用于生成C或C ++源的合并成一个文件。

  合并是仅使用几个文件(低至一个或两个)来分发库源代码的另一种方法。该工具通过内联包含的文件以创建一个或多个大型源文件或头文件来产生合并。

  对于成熟的库(即不经常更改),合并后的发行格式通常更易于集成和更新。合并将作为附加源文件添加到现有项目,而无需由构建工具单独构建。以下是一些已合并的源代码库示例:

代码语言:javascript
复制
FreeType: http://github.com/vinniefalco/FreeTypeAmalgam
JUCE:     http://github.com/vinniefalco/JUCEAmalgam
TagLib:   http://github.com/vinniefalco/TagLibAmalgam
  • 项目地址:
代码语言:javascript
复制
https://github.com/vinniefalco/Amalgamate
  • 项目提供一个VS2010工程,Qt君使用VS2017也可以编译成功。
  • 使用说明:
代码语言:javascript
复制
  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 <文件名字>)
代码语言:javascript
复制
amalgamate main.cpp out.cpp
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Qt君 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档