Visual Studio 2017 编译 7zip for Windows

最近有个项目需要比较优秀的压缩比率。7zip比较合适。

在windows系统下,编译7zip,教程不多。这里总结下:

  1. 安装Visual Studio 2017 社区版

    下载页面:点此

  2. 启动编译环境

    • 32位编译环境

      1
      C:\Windows\system32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars32.bat"

    • 64位编译环境

      1
      C:\Windows\system32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"

  3. 下载7zip源码包

    下载页面:点此

    ps:本次选定的是稳定版 16.04

    解压在 D:\7z1604-src

  4. 打个小补丁

    需要去除一个编译选项:

    打开:D:\7z1604-src\CPP\build.mak

    将:

    1
    LFLAGS = $(LFLAGS) -OPT:NOWIN98

    改为:

    1
    LFLAGS = $(LFLAGS)

    PS:一些wiki如此推荐,我没改貌似也可编译通过

  5. 编译

    编译目录是:D:\7z1604-src\CPP

    • 32位环境中,输入:

      1
      nmake NEW_COMPILER=1 MY_STATIC_LINK=1

    • 64位环境中,输入:

      1
      nmake NEW_COMPILER=1 MY_STATIC_LINK=1 CPU=AMD64

  6. 文件描述

    (路径中的%bit%根据32位和64位自行替换。32:O;64:AMD64)

File Description
7zFM.exe 7zip文件管理器
7za.exe 命令行工具(似乎和7z.exe相同)
7zr.exe 命令行工具(似乎和7z.exe相同)
7zG.exe 命令行工具,但不显示console窗体
7z.exe 命令行工具
lzma.exe lzma的编码工具,和gzip挺像的
7zcl.exe 7zip的client工具,可以理解为使用7zip dll做二次开发的demo
7z.sfx 自解压头,显示GUI
7zCon.sfx 自解压头,显示console
7zS.sfx 自安装头