我怎么能格式化使输出(!!通过仅仅改变qmake项目的文件!).我的编辑线继续增长,一线警告/错误的几乎消失在他们之间。

我想到的东西喜欢

$(CC) in.ext -o out.ext

感谢的方面

有帮助吗?

解决方案

qmake,可以添加无声配置选项:

CONFIG += silent

(注意:我认为这是命令它与此类似)

这应该抑制大部分输出的,只有打印线,如“编译a.o”,用你的警告和错误一起。我相信这是类似于make.SILENT.指令(我认为这是一个......)

您可能要小心这一点,但是,因为它抑制了很多的错误解析器喜欢用的信息。例如,如果正在用SUBDIRS配置编译,它不会打印出当它改变到不同的目录中。

其他提示

有不同的方法。你可以让他们的配置。

  • 如果你 添加 @ 标志 在前线的内部规则中,命令本身不会印刷,但其输出。
  • 如果你 添加 -Werror 你的 CFLAGS 变量(你有一个,不是吗?这是一种常见的做法!), 你肯定不会错过任何警告--的建立将停止之后的第一个。
  • 你可以 重定向标准输出你的命令 /dev/null, 仅留下错误流(这是不是你的特殊情况,因为海湾合作委员会通常不会产生输出,但可能有助于其他命令)。

不幸的是,对于 qmake 只有第二种方法适用。添加到项目文件:

QMAKE_CFLAGS+=-Werror
QMAKE_CXXFLAGS+=-Werror

和生成文件的产生将使用这些旗帜时,他们援引编译器,所以建立将停止在每一个警告。


(这部分将被转移到另一个问题很快就一一个出现).

对于通常的做可以使用它的所有--你可以让这一切配置!这里的例子:

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的土耳其语翻译生成文件.

您可以抑制与打印输出“@”和echo你希望看到什么:

简单示例:

out.ext:  $(OBJ)
    @echo $(CC) -o out.ext
    @$(CC) -o out.ext $(OBJ) $(OTHER_FLAGS_ETC)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top