Ron*_*del 10 c++ qt qmake makefile qt4
如何格式化输出(仅通过更改qmake项目文件!!).我的编译线继续增长,一线警告/错误几乎消失了.
我在想类似的东西
$(CC) in.ext -o out.ext
谢谢你
Cal*_*itt 17
在qmake,您可以添加静默配置选项:
CONFIG += silent
(注意:我认为这是命令.它与此类似.)
哪个应该抑制大部分输出,只打印像"编译ao"这样的行,以及警告和错误.我相信这是类似make的.SILENT.指令(我认为这是一个...)
但是,您可能需要小心,因为它会抑制错误解析器喜欢使用的大量信息.例如,如果使用SUBDIRS配置进行编译,则在更改为不同目录时将不会打印出来.
有不同的方法.你可以让它们可配置.
@符号,则不会打印命令本身,但会输出.-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中看到了它.