代码之家  ›  专栏  ›  技术社区  ›  Ronny Brendel

如何格式化/更改qmakebuild输出

  •  11
  • Ronny Brendel  · 技术社区  · 16 年前

    如何格式化make输出( !!只需更改qmake项目文件!! ).

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

    谢谢你

    3 回复  |  直到 16 年前
        1
  •  17
  •   Caleb Huitt - cjhuitt    16 年前

    qmake

    CONFIG += silent
    

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

    make s .SILENT. 指令(我想就是这个……)

    然而,您可能需要小心,因为它抑制了错误解析器喜欢使用的大量信息。例如,如果您正在使用 SUBDIRS

        2
  •  5
  •   P Shved    16 年前

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

    • 如果你 添加 @ 在规则行的前面,命令本身不会被打印,但它的输出会被打印。
    • 如果你 添加 -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生成文件中看到了它。

        3
  •  0
  •   Loki Astari    16 年前

    out.ext:  $(OBJ)
        @echo $(CC) -o out.ext
        @$(CC) -o out.ext $(OBJ) $(OTHER_FLAGS_ETC)