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

Posted

技术标签:

【中文标题】NMAKE:如何强制调试构建? [7ZIP]【英文标题】:NMAKE: How do I force a debug build? [7ZIP] 【发布时间】:2019-06-04 01:57:43 【问题描述】:

构建 7Zip 的建议方法是在命令行上通过 nmake 命令行实用程序。 7zip 似乎没有提供有效的视觉工作室解决方案。

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

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

如果没有通过 nmake 完成此任务的标准方法,我很高兴收到有关 7Zip 的帮助。与 GNU make 相比,我对 .MAK 的熟悉程度要低得多,并且迄今为止无法在 7ZIP 中找到类似于 GNU 中的“调试目标”的东西。

【问题讨论】:

【参考方案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

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

【讨论】:

【参考方案2】:

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

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

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

诀窍是您需要导航到项目目录才能执行此操作。 7z 构建系统与相关目录结构硬绑定,并从***主 Build.mak 文件获取构建参数。 因此,如果您需要修改所有项目的构建参数,只需修改该文件即可。

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

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

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

    为标志 CFLAGS_O1 CFLAGS_O2 更改 -O1 和 -O2

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

【讨论】:

以上是关于NMAKE:如何强制调试构建? [7ZIP]的主要内容,如果未能解决你的问题,请参考以下文章

Qt Release 构建时强制包含调试信息

如何强制 Rider 使用 Chrome 进行调试?

如何强制 Cordova 模拟发布 apk,而不是调试 apk?

如何在 Linux 上强制执行向量下标超出范围调试断言

如何在 Spyder(或任何其他调试器)的 ipdb 调试器中强制 Matplotlib 进行绘制?

如何强制 GitHub Pages 构建?