winmerge

C/C++ 2025-08-05

winmerge

winmerge是Windows的开源差异和合并工具。它可以比较文件和文件夹,以易于理解和操纵的视觉格式呈现差异。自2000年以来,它一直在积极发展。


winmerge可以做什么?

winmerge的功能包括:

  • 文件比较:在视觉上比较两个或三个文本文件的内容并排,从而强调了它们之间的差异。它还可以突出一行中的差异。
  • 文件夹比较:比较两个文件夹的内容,显示哪些文件不同,缺少或仅存在于其中一个文件夹中。
  • 合并:文件或文件夹之间的更改。您可以选择一个从一个到另一个差异。
  • 语法突出显示:各种编程语言和文件格式的语法突出显示,使识别代码或结构化文本的更改变得更加容易。
  • 补丁文件创建:生成补丁文件(以正常,上下文和统一格式)来描述文件之间的差异。
  • 忽略选项:将其配置为忽略空格差异,案例更改或基于正则表达式的特定行。
  • Shell Integration :与Windows Explorer集成,允许您右键单击文件或文件夹,并将其直接与winmerge进行比较。
  • 存档支持:使用7-zip,比较存档格式中的文件。

从本质上讲,这是一个需要跟踪文件更改,比较文档或代码的不同版本的人的工具,或者是不同人进行的合并修改。


如何贡献

如果您认为自己找到了一个错误或想请求功能,请提交问题。

为了贡献代码,将主要的winmerge存储库分叉并在该叉上创建一个分支。

使用Eric Allman缩进格式化代码。

当您的代码准备好审核/合并时,请创建一个拉请请求,并解释所做的更改。


主题

winmerge使您可以从几个预制主题中进行选择并创建自己的主题。

快速主题说明

  1. 打开选项并导航到颜色部分
  2. 在每个小节中都会调整您喜欢的颜色
  3. 导出...选项将为您提供所有设置的INI文件
  4. 复制[您的安装文件夹] winmerge colorschemes twilight.ini to yournewtheme.ini
  5. 将相应的颜色设置从导出的INI文件复制到yournewtheme.ini
  6. 然后,您可以将主题文件放入Colorshemes文件夹中,然后在选项中选择它

文件夹结构

winmerge的源代码,其插件,过滤器,设置程序和各种实用程序都保存在子文件夹中:

  • ArchiveSupport/Merge7Z-包含Merge7Z DLL,将winmerge与7 -ZIP连接起来,需要编译winmerge U.Exe。 还有一个用于Merge7Z DLL的独立安装程序。
  • 构建 - 由编译器winmerge时由编译器创建。它包含编译的可执行文件,库,用户手册等。
  • buildTMP-由编译winmerge编译时由编译器创建。它包含编译期间创建的临时文件,可以安全删除。
  • COLORCHEMES-配色方案 /主题。
  • 文档 - 不同子文件夹中的用户和开发人员文档。可以通过在DOCS文件夹中打开index.html浏览。
  • 外部 - 包含来自winmerge项目外的几个图书馆。建筑所需的,可能是为winmerge定制的。库包括XML解析器和正则表达式解析器。
  • 过滤器 - winmerge文件过滤器。
  • 安装程序 - winmerge的安装程序。
  • 插件 - winmerge运行时插件DLL和脚本的源代码和二进制文件。
  • Shellextension- Windows Shell(Explorer)集成。 将菜单项添加到Explorer上下文菜单中。
  • SRC- winmerge程序的源代码。
  • 测试 - 一套测试差异文件和一个用于运行它们并报告结果的脚本。该文件夹还具有一个Google测试子文件夹,其中包含使用Google测试框架进行的单元测试。
  • 工具/脚本 - winmerge开发人员使用的各种实用程序 - 请参见每个文件。
  • 翻译 - 用于翻译的语言文件。

ChangElog在DOC/用户/ChangElog.md中。


如何跑步和调试

winmerge文件夹具有不同的Visual Studio解决方案文件(.sln),您可以在测试更改时用于构建,调试和运行。

winmerge您运行了winmerge buldall脚本

如果您的体系结构不是X64,请查找构建完成后生成的任何其他文件夹。

调试的另一种方法,从上一步运行EXE,然后从vs附加到运行过程。


构建winmerge

Visual Studio 2017

  • 社区专业企业
  • VC ++ 2017最新V141工具
  • 视觉C ++编译器和库(ARM,ARM64)
  • Windows XP支持C ++
  • 视觉C ++ MFC(X86和X64,ARM,ARM64)
  • 视觉C ++ ATL(X86和X64,ARM,ARM64)
  • Windows 10 SDK

Visual Studio 2019

  • 社区专业企业
  • MSVC V142 -VS 2019 C ++(X64/X86,ARM,ARM64)构建工具(最新)
  • C ++ MFC最新V142构建工具(X86&X64,ARM,ARM64)
  • C ++ ATL最新V142构建工具(X86&X64,ARM,ARM64)
  • Windows 10 SDK

Visual Studio 2022

  • 社区专业企业
  • MSVC V143 BuildTools(X64/X86,ARM,ARM64)
  • C ++ MFC最新V143构建工具(X64/X86,ARM,ARM64)
  • C ++ ATL最新V143构建工具(X64/X86,ARM,ARM64)
  • Windows 10 SDK

其他实用程序/程序

  • git
  • Inno设置5.x和6.x
  • 7-zip
  • Python
  • 潘多克
  • MSYS2和MSYS2软件包(PO4A和DIFFUTILS)

如何构建

winmerge cd winmerge DownloadDeps.cmd BuildAll.vs2022.cmd [x86|x64|ARM|ARM64] or BuildAll.vs2019.cmd [x86|x64|ARM|ARM64] or BuildAll.vs2017.cmd [x86|x64|ARM|ARM64]">
git clone --recurse-submodules https://githu*b.**com/winmerge/ winmerge
cd winmerge
DownloadDeps.cmd
BuildAll.vs2022.cmd [x86|x64|ARM|ARM64] or BuildAll.vs2019.cmd [x86|x64|ARM|ARM64] or BuildAll.vs2017.cmd [x86|x64|ARM|ARM64]
下载源码

通过命令行克隆项目:

git clone https://github.com/WinMerge/winmerge.git