Итак, у меня есть правило make-файла:
header:
rm -f ./include/temp.txt
cat ./srcs/ft_*/ft_*.c | grep -E "^\w" | sed 's/$$/;/' | sed '/int main/d' | sed '/int\tmain' >> ./include/temp.txt
awk '//; /# define/{while(getline<"header.h"){print}}' temp.txt >tmp
mv tmp header.h
Я пытаюсь создать проект lib, и у меня есть много функций в каталоге ./srcs/, каждая функция хранится в каталоге ft_name_of_the_function. Я хочу иметь правило Makefile, которое редактирует файл заголовка библиотеки lib (который находится в ./include/ и называется header.h), добавляя каждый прототип.
Этот скрипт работал как исполняемый файл оболочки, но, похоже, не работает после того, как я поместил его в make-файл. Я все еще могу сказать make-файлу запустить исполняемый файл оболочки, но я хотел бы понять. Когда я запускаю make header
, это дает мне стандартный вывод:
rm -f ./include/temp.txt
cat ./srcs/ft_*/ft_*.c | grep -E "^\w" | sed 's/$/;/' | sed '/int main/d' | sed '/int\tmain' >> ./include/temp.txt
sed: -e expression n°1, caractère 10: expression régulière d'adresse inachevée
Makefile:41: recipe for target 'header' failed
make: *** [header] Error 1