Как добавить правильнее текст с переносами строк и различными символами в переменную в Makefile?
Всем привет, подскажите пожалуйста как добавить правильнее текст с переносами строк и различными символами в переменную в Makefile?
сейчас символы обрезаются и переносы с отступами не учитываются..
Пример текста для записи в переменную в Makefile
VARIABLE="<?php
namespace App\Form\${CLASS_NAME};
use App\Form\${CLASS_NAME}\Request\${CLASS_NAME}CreateRequest;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ${CLASS_NAME}Type extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('name', null, [
'label' => 'Название'
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => ${CLASS_NAME}Request::class,
]);
}
}
"
да возможно выглядит костыльно.. но все же?
Ответы (1 шт):
предуведомление: в ответе идёт речь о программе gnu/make.
для многострочных текстов лучше использовать директиву define:
define переменная
многострочный текст
с символами $ которые надо удвоить: $$
и отступами.
если обратный слэш нужен в конце строки, \
то _после_ него
надо поставить пробел. вот так:\
тогда и слэш не будет интерпретирован
как символ разрыва строки.
endef
вывести значение такой переменной на экран проще всего с помощью функции info:
цель:
$(info $(переменная))
результат:
$ make цель
многострочный текст
с символами которые надо удвоить: $
и отступами.
если обратный слэш нужен в конце строки, то _после_ него
надо поставить пробел. вот так:\
тогда и слэш не будет интерпретирован
как символ разрыва строки.
а если значение такой переменной надо записать в файл, то проще всего воспользоваться функцией file:
цель:
$(file > имя.файла,$(переменная))
имя файла, конечно, можно указать и с помощью переменной (в том числе и любой подходящей «автоматической», типа $@, $% и т.п.):
имя = имя.файла
цель:
$(file > $(имя),$(переменная))