NMAKE:如何强制进行调试构建? [7ZIP]

时间:2019-06-04 01:57:43

标签: build nmake

建议的构建7Zip的方法是通过nmake命令行实用工具在命令行上。 7zip似乎未提供有效的Visual Studio解决方案。

我已经看到诸如nmake NEW_COMPILER=1 MY_STATIC_LINK=1之类的调用建议用于使用各种嵌套的.MAK文件来启动构建。

使用此命令行界面如何强制使用调试符号进行构建?

如果没有通过nmake完成此操作的标准方法,我将特别高兴获得有关7Zip的帮助。我对.MAK的了解不如对GNU的了解,到目前为止,我还无法在7ZIP中找到类似于GNU的“调试目标”的东西。

2 个答案:

答案 0 :(得分:1)

要使使用Visual Studio nmake的项目生成调试输出,您需要编辑makefile并进行2次更改。

首先,您需要在编译时使用的标志列表中添加/ Zi

CFLAGS = $(CFLAGS) -nologo -c -Fo$O/ -W4 -WX -EHsc -Gy -GR- -GF /Zi

第二,您需要将/ debug添加到链接器的选项列表中,例如

LFLAGS = $(LFLAGS) -nologo -OPT:REF -OPT:ICF /DEBUG

我在不同的库中对此进行了测试,我认为这里会有相似之处。

答案 1 :(得分:1)

7zip 归档程序提供了出色的压缩和性能结果,但遗憾的是缺乏文档、构建过程和整个代码。
我知道这个问题是在 1.5 年前提出的,但我希望能节省一些时间在 7z 中挖掘。
要从源代码构建 7z,您需要 Microsoft Visual Studio 并执行以下步骤:

  1. VS 2019 的启动工具命令提示符
  2. 导航到源文件夹 cd c:\sources\7z
  3. 调用 nmake /f makefile

否则,您可以将 MSVC 6.0 dsw/dsp 文件转换为现代 .vcxproj 格式。只需在 MSVC 2019 中打开 dsw 文件,它就会自动进行转换。

诀窍是你需要导航到项目目录才能做到这一点。 7z 构建系统硬绑定到相对目录结构,并从顶级主 Build.mak 文件中获取构建参数。
因此,如果您需要修改所有项目的构建参数,只需修改该文件即可。

对于 7z version 19.00,您需要在 CPP/Build.mak file 中编辑这些行:

  1. /Zi fag 添加到行
    CFLAGS = $(CFLAGS) -nologo -c -Fo$O/ -W4 -WX -EHsc -Gy -GR- -GF /Zi

  2. 添加/DEBUG
    LFLAGS = $(LFLAGS) -nologo -OPT:REF -OPT:ICF /DEBUG

  3. 更改标志 CFLAGS_O1 CFLAGS_O2 的 -O1 和 -O2

    !IF "$(PLATFORM)" == "x64"
    CFLAGS_O1 = $(CFLAGS) -Od
    !ELSE
    CFLAGS_O1 = $(CFLAGS) -Od
    !ENDIF
    CFLAGS_O2 = $(CFLAGS) -Od