Как поставить команду с doxygen в makefile - PullRequest
0 голосов
/ 25 апреля 2020

Я использую linux и фильтрую вывод кислорода следующим образом:

doxygen 2> >(grep "Arguments.h") 1> /dev/null

, который просто концентрируется на сбоях в Arguments.h. Теперь я хочу поместить все это в минимальный make-файл для GNU Make 4.3

doc:
    doxygen 2> >(grep "Arguments.h") 1> /dev/null

, конечно, позже, чтобы заменить Arguments.h каким-то другим файлом. Но это не работает: насколько я знаю, ответом является

doxygen 2> >(grep "Arguments.h") 1> /dev/null
/bin/sh: -c: line 0: syntax error near unexpected token `>'
/bin/sh: -c: line 0: `doxygen 2> >(grep "Arguments.h") 1> /dev/null'
make: *** [makefile:2: doc] Error 1

. Нужно сбежать от чего-то, но не знаю, что ... Любые специалисты, которые могут помочь?

1 Ответ

1 голос
/ 25 апреля 2020

Это не связано с побегом и др. c. Это связано с тем, какая оболочка используется.

GNU make (как и во всех версиях make) всегда вызывает /bin/sh для запуска рецептов, и это стандартная оболочка POSIX (или некоторая близость к ней). Команда, которую вы используете, определенно не поддерживается стандартом POSIX, похоже, она использует многие функции, доступные только в качестве улучшений в оболочке bash.

Если вы хотите написать ваши рецепты, использующие bash функции, которые вы должны сказать, заставляют использовать bash в качестве оболочки, а не /bin/sh. Вы можете добавить это в свой make-файл:

SHELL = /bin/bash
...