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]的主要内容,如果未能解决你的问题,请参考以下文章
如何强制 Cordova 模拟发布 apk,而不是调试 apk?