Как форматировать/изменять вывод сборки qmake

Мне действительно нравится Apache учебные руководства Felix . Однако я думаю в общем усилении, OSGi в Вашем приложении не является одним из тех, "давайте использовать эту платформу, потому что это - шумиха" решение. Это - больше вопроса о дизайне, но тогда все, что OSGi дает Вам с точки зрения дизайна, Вы можете иметь с Java ванили также.

Что касается времени выполнения, Вы не можете только добавить существующее приложение и сделать его, OSGi включил. Это должен быть дизайн, чтобы быть динамичным. DM Spring облегчает скрывать это от Вас, но это все еще там, и необходимо знать о нем.

10
задан P Shved 29 September 2009 в 12:37
поделиться

3 ответа

В qmake вы можете добавить параметр конфигурации без вывода сообщений:

CONFIG += silent

(примечание: я думаю, что это команда. Это что-то похожее на это.)

Которая должен подавлять большую часть вывода и выводить только такие строки, как «compiling ao», вместе с вашими предупреждениями и ошибками. Я считаю, что это похоже на make .SILENT. директива (я думаю, что это единственная ...)

Однако вы можете быть осторожны с этим, потому что он подавляет большую часть информации, которую любят использовать анализаторы ошибок. Например, если вы компилируете конфигурацию SUBDIRS , она не будет распечатываться при переходе в другие каталоги.

17
ответ дан 3 December 2019 в 17:59
поделиться

Есть разные подходы. И вы можете сделать их настраиваемыми.

  • Если вы добавите @ знак перед строкой внутри правила, сама команда не будет напечатана, но ее вывод будет.
  • Если вы добавите -Werror к вашей переменной CFLAGS (она у вас есть, не так ли? Это обычная практика!), Вы точно не пропустите любое предупреждение - сборка остановится после первого.
  • Вы можете перенаправить стандартный вывод вашей команды на / dev / null , оставив только поток ошибок (это не для вашего конкретного случае, потому что gcc обычно не выводит результат, но может быть полезен для других команд).

К сожалению, для qmake применим только второй подход. Добавьте в свой файл проекта:

QMAKE_CFLAGS+=-Werror
QMAKE_CXXFLAGS+=-Werror

И созданные make-файлы будут использовать эти флаги при вызове компилятора, поэтому сборка будет останавливаться при каждом предупреждении.


(этот раздел будет перемещен к другому вопросу, как только появится вопрос).

Для обычного 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

, что даст столько, сколько вам нужно.

Такой подход, с настройкой, используется в производственном коде. Например, я видел это в make-файлах Ubuntu IcedTea.


(этот раздел будет перемещен к другому вопросу, как только появится вопрос)

Для обычного 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

, что даст столько, сколько вам нужно.

Такой подход, с настройкой, используется в производственном коде. Например, я видел это в make-файлах Ubuntu IcedTea.


(этот раздел будет перемещен к другому вопросу, как только появится вопрос)

Для обычного 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

, что даст столько, сколько вам нужно.

Такой подход, с настройкой, используется в производственном коде. Например, я видел это в make-файлах Ubuntu IcedTea.

Если вы вызываете

$ make

, значение short будет использоваться по умолчанию (обратите внимание на оператор ? = вместо обычного = !), И правила будут расширены до такая версия

out.ext: out.o
    @echo cc  -o out.ext 1>/dev/null
    @cc  -o out.ext out.o 1>/dev/null

, что даст столько, сколько вам нужно.

Такой подход, с настройкой, используется в производственном коде. Например, я видел это в make-файлах Ubuntu IcedTea.

Если вы вызываете

$ make

, значение short будет использоваться по умолчанию (обратите внимание на оператор ? = вместо обычного = !), И правила будут расширены до такая версия

out.ext: out.o
    @echo cc  -o out.ext 1>/dev/null
    @cc  -o out.ext out.o 1>/dev/null

, что даст столько, сколько вам нужно.

Такой подход, с настройкой, используется в производственном коде. Например, я видел это в make-файлах Ubuntu IcedTea.

5
ответ дан 3 December 2019 в 17:59
поделиться

Вы можете подавить распечатку с помощью '@' и повторить то, что вы хотите увидеть:

Простой пример:

out.ext:  $(OBJ)
    @echo $(CC) -o out.ext
    @$(CC) -o out.ext $(OBJ) $(OTHER_FLAGS_ETC)
0
ответ дан 3 December 2019 в 17:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: