如何格式化输出( !!仅通过更改qmake项目文件!! )。 我的编译线继续增长,单行警告/错误几乎消失了。
我在想像
这样的东西$(CC) in.ext -o out.ext
谢谢
答案 0 :(得分:17)
在qmake
中,您可以添加静默配置选项:
CONFIG += silent
(注意:我认为这是命令。它与此类似。)
哪个应该抑制大部分输出,只打印像“编译a.o”这样的行,以及警告和错误。我相信这类似于make
的{{1}}指令(我认为那是......)
但是,您可能需要小心这一点,因为它会抑制错误解析器喜欢使用的大量信息。例如,如果使用.SILENT.
配置进行编译,则在更改为不同目录时不会打印出来。
答案 1 :(得分:5)
有不同的方法。你可以让它们配置。
@
符号,则不会打印命令本身,但会输出。-Werror
添加到CFLAGS
变量中(您确实有一个,不是吗?这是一种常见做法!),绝对不会错过任何警告 - 构建将在第一个之后停止。/dev/null
,只留下错误流(这不适用于您的特定情况,因为gcc通常不会产生输出但可能会有帮助对于其他命令)。不幸的是,对于qmake
,只有第二种方法适用。添加到您的项目文件:
QMAKE_CFLAGS+=-Werror
QMAKE_CXXFLAGS+=-Werror
生成的makefile在调用编译器时将使用这些标志,因此构建将在每次警告时停止。
(一旦出现,此部分将被移至另一个问题)。
对于通常的make,你可以使用它 - 你可以使它全部可配置!这是一个例子:
trace?=short
ifeq ($(trace),short)
suppress_echo=@
redirect_to_null=1>/dev/null
else ifeq ($(trace),full)
suppress_echo=
redirect_to_null=
else ifeq ($(trace),werror)
CFLAGS+=-Werror
else
$(error Incorrect trace type "$(trace)"!)
endif
# Thanks to Martin York for the source of this copy-pasted code
out.ext: $(OBJ)
@echo $(CC) $(CFLAGS) -o out.ext $(redirect_to_null)
$(suppress_echo)$(CC) $(CFLAGS) -o out.ext $(OBJ) $(redirect_to_null)
所以,如果你这样调用make
:
$ make trace=full
它将打印所有内容。如果你调用
$ make
默认情况下将使用short
值(请注意?=
运算符,而不是通常的=
!),规则将扩展为此类版本
out.ext: out.o
@echo cc -o out.ext 1>/dev/null
@cc -o out.ext out.o 1>/dev/null
什么能满足您的需求。
这种带有配置的方法用于生产代码。例如,我在Ubuntu的IcedTea makefile中看到了它。
答案 2 :(得分:0)
您可以使用“@”来抑制打印输出并回显您想要查看的内容:
简单示例:
out.ext: $(OBJ)
@echo $(CC) -o out.ext
@$(CC) -o out.ext $(OBJ) $(OTHER_FLAGS_ETC)