如何让gmake 4.0显示详细的帮助性错误提示信息?
问题描述
我通过MinGW安装的gmake 4.0无法显示帮助性错误信息。
例如我有如下makefile:
# test.mk all: somefile.c
由于当前不存在名为somefile.c的文件,执行gmake会失败,但无任何有用提示:
$ gmake -f test.mk gmake: ***. Stop.
添加--debug参数后可得到一些提示:
$ gmake -f test.mk --debug GNU Make 4.0 Built for x86_64-w64-mingw32 Copyright (C) 1988-2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Reading makefiles... Updating goal targets.... File 'all' does not exist. File 'somefile.c' does not exist. Must remake target 'somefile.c'. gmake: ***. Stop.
期望效果
使用另一工具集的旧版本gmake 3.80时,我能得到帮助性提示:
$ gmake-old -f test.mk gmake-old: *** No rule to make target `somefile.c', needed by `all'. Stop.
运行环境
我在Windows系统的git-bash中执行这些命令,在Windows cmd中调用gmake也会得到类似信息。
疑问
是否存在gmake选项或可设置的环境变量,能让gmake 4.0显示类似“No rule to make target 'somefile.c', needed by 'all'”的帮助性错误信息?
解决方法
可以尝试以下几种方式:
使用
--no-builtin-rules选项
执行gmake时加上该选项,禁用内置规则,gmake会直接输出缺少规则的错误信息:$ gmake -f test.mk --no-builtin-rules gmake: *** No rule to make target 'somefile.c', needed by 'all'. Stop.设置环境变量持久生效
若不想每次手动加选项,可设置MAKEFLAGS环境变量:- git-bash中执行:
export MAKEFLAGS="--no-builtin-rules" - Windows cmd中执行:
set MAKEFLAGS=--no-builtin-rules
后续调用gmake会自动应用该选项。
- git-bash中执行:
更新gmake版本
MinGW的gmake 4.0可能存在错误信息截断的bug,更新到4.3及以上版本,这类问题通常会被修复。
内容的提问来源于stack exchange,提问作者HeLLoTIS
相关产品推荐
相关产品推荐

