Makefile$(信息和$(错误)

Makefile$(信息和$(错误),makefile,gnu,Makefile,Gnu,我使用$(info)在输出上写入内容,然后检查是否有错误,然后使用$(error)。我在输出上看到的是,如果多个$(info)函数$(错误输出并不总是在末尾。有时甚至在中间。取决于进程的速度有多快。有可能‘等待’直到所有的$(信息将被处理)< /P>)。 Exmaple: $(info a) $(info a) $(info a) $(info a) $(error ERROR) Output 1: a a a a ERROR Output 2: a a ERROR a a infoout

我使用$(info)在输出上写入内容,然后检查是否有错误,然后使用$(error)。我在输出上看到的是,如果多个$(info)函数$(错误输出并不总是在末尾。有时甚至在中间。取决于进程的速度有多快。有可能‘等待’直到所有的$(信息将被处理)< /P>)。
Exmaple:
$(info a)
$(info a)
$(info a)
$(info a)
$(error ERROR)

Output 1:
a
a
a
a
ERROR

Output 2:
a
a
ERROR
a
a

info
output转到stdout,而
error
output转到stderr。默认情况下,stdout是缓冲的,而stderr是非缓冲的;这就是为什么它们的显示方式不同。你没有说你使用的GNU版本是什么,但是如果你升级到一个更新的版本,那么我相信每次写入后都会刷新stdout和stderr您不应该再看到这个问题(我相信从GNU make 4.0开始)


或者,您可以使用类似的工具(如果是GNU/Linux系统,它可能已经安装在您的系统上)来运行GNU make。

info
输出转到stdout,而
error
输出转到stderr。默认情况下,stdout是缓冲的,而stderr是非缓冲的;这就是它们显示方式不同的原因您正在使用的GNU make版本,但是如果您升级到一个更新的版本,那么我相信它会在每次写入之后刷新stdout和stderr,所以您应该不再看到这个问题(我相信从GNU make 4.0开始)

或者,您可以使用类似的工具来运行GNU make,如果它是GNU/Linux系统,那么它可能已经安装在您的系统上