Как я выполняю Perl один лайнер от make-файла?

Я знаю жемчуг, один лайнер ниже очень прост, работы и делает глобальную замену, для 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

Спасибо

5
задан Frank 24 January 2010 в 17:10
поделиться

2 ответа

Если вы хотите запустить 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

Если вы сообщите нам, что вы пытаетесь сделать, мы сможем дать вам лучшие, более полезные ответы.

4
ответ дан 14 December 2019 в 19:13
поделиться

Вы должны показать наименьшего возможного makefile, который демонстрирует вашу проблему, а также шоу Как вы это называете. Предполагая, что ваш Makefile выглядит что-то подобное, я получаю сообщение об ошибке. Обратите внимание, что есть символ вкладок, предшествующий приложению в все: .

APP = $(shell date)

all:
    APP

Возможно, вы имели в виду, чтобы сделать это вместо этого:

APP = $(shell date)

all:
    $(APP)

Я не использовал вашу команду Perl , потому что она не работает для меня, как есть. Вы действительно хотите использовать оператор замещения Perl? Perl -Pi -e «S / A / A / G»

Вот ссылка на GNU Make документацию.

1
ответ дан 14 December 2019 в 19:13
поделиться
Другие вопросы по тегам:

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