Windows环境下使用Make调试时如何保留生成的.sh Shell脚本?
在Windows中保留Make生成的Shell脚本以调试执行流程
如果你在Windows环境使用GNU Make(比如MinGW、MSYS2或WSL环境),想要保留执行过程中生成的临时.sh脚本,可通过以下几种方法实现:
方法一:使用调试参数查看并保留脚本
GNU Make的调试模式会输出临时脚本的详细信息,甚至在部分场景下不会自动删除脚本:
- 执行Make时添加
-d参数(全量调试):
该参数会输出大量调试日志,其中包含临时shell脚本的路径、脚本内容,以及执行过程的每一步细节。你可以从日志中找到脚本路径,手动复制保存。make -d [目标] - 若只关注shell脚本相关的调试信息,可使用
--debug=b参数(聚焦于执行过程的调试):make --debug=b [目标]
方法二:强制保留临时脚本
通过设置Make的环境变量或参数,让它不自动删除生成的临时shell脚本:
- 在执行Make前设置
MAKEFLAGS环境变量:
注:export MAKEFLAGS="--keep-temp" make [目标]--keep-temp参数会让Make保留所有临时生成的文件,包括shell脚本。 - 也可以直接在命令行中传递参数:
make --keep-temp [目标]
方法三:手动导出命令到脚本
如果你只需要获取Make要执行的命令序列,可使用-n(--dry-run)参数,它会打印所有将要执行的命令但不实际运行,你可以将这些命令重定向到.sh文件中:
make -n [目标] > debug_script.sh
之后你可以手动执行这个脚本,或者修改后调试。
针对Windows原生Make(如nmake)的补充
如果你使用的是Windows自带的nmake工具,可通过以下方式获取执行脚本:
- 使用
/n参数打印命令不执行,重定向到文件:
注:nmake默认生成的是nmake /n [目标] > debug_script.bat.bat脚本而非.sh,若你需要.sh脚本,需确保nmake配置了使用shell环境。
内容的提问来源于stack exchange,提问作者novice
相关产品推荐
相关产品推荐

