Я знаю жемчуг, один лайнер ниже очень прост, работы и делает глобальную замену, для a; но как я выполняю его в make-файле?
perl -pi -e "s/a/A/g" filename
Я попробовал (я теперь думаю, что остальная часть сообщения является спамом, поскольку команда оболочки делает расширение командной строки - НЕ, ЧТО я ХОЧУ!) Вопрос выше все еще стоит!
APP = $(shell perl -pi -e "s/a/A/g" filename)
с и без следующей строки
EXE = $(APP)
и я всегда получаю следующую ошибку
make: APP: Command not found
то, которое я принимаю, прибывает из строки, которая запускает APP
Спасибо
Если вы хотите запустить Perl как часть действия цели, вы можете использовать
$ cat Makefile all: echo abc | perl -pe 's/a/A/g' $ make echo abc | perl -pe 's/a/A/g' Abc
(обратите внимание, что есть символ вкладки раньше Echo
.)
Perl -I
Опция предназначена для редактирования файлов на месте, но смущено make
(если, возможно, вы не пишете Phony Target ). Более типичный шаблон состоит в том, чтобы сделать цели из источников. Например:
$ cat Makefile all: bAr bAr: bar.in perl -pe 's/a/A/g' bar.in > bAr $ cat bar.in bar $ make perl -pe 's/a/A/g' bar.in > bAr $ cat bAr bAr
Если вы сообщите нам, что вы пытаетесь сделать, мы сможем дать вам лучшие, более полезные ответы.
Вы должны показать наименьшего возможного makefile, который демонстрирует вашу проблему, а также шоу Как вы это называете. Предполагая, что ваш Makefile выглядит что-то подобное, я получаю сообщение об ошибке. Обратите внимание, что есть символ вкладок, предшествующий приложению
в все:
.
APP = $(shell date)
all:
APP
Возможно, вы имели в виду, чтобы сделать это вместо этого:
APP = $(shell date)
all:
$(APP)
Я не использовал вашу команду Perl
, потому что она не работает для меня, как есть.
Вы действительно хотите использовать оператор замещения Perl? Perl -Pi -e «S / A / A / G»
Вот ссылка на GNU Make документацию.