Makefile: 2: *** отсутствует разделитель. Стоп

У меня есть два файла .cpp, а именно decryptor.cpp и prod-ent.cpp.
Я создал Makefile для компиляции обоих файлов на платформе Linux.

all: decryptor.cpp prod-ent.cpp
       g++ prod-ent.cpp -o prod-ent -g
       g++ decryptor.cpp -o decryptor -g -lcryptopp
clean:
       rm prod-ent
       rm decryptor

Всякий раз, когда я пытаюсь выполнить Makefile, он показывает мне следующую ошибку:

Makefile: 2: * отсутствует разделитель. Стоп.

Я новичок в создании make файлов и не могу понять свою ошибку. Пожалуйста, помогите мне в исправлении кода.

Спасибо заранее!

Ответ 1

Перед командами g++ и rm вам нужна реальная вкладка вместо пространства. Если все еще не удается то ваш редактор вместо этого вставляет пробелы, даже если вы нажимаете клавишу вкладки на клавиатуре. Вам нужно настроить редактор, чтобы вместо этого вставлять жесткие вкладки (09 в ASCII).

Как

all: decryptor.cpp prod-ent.cpp
*****g++ prod-ent.cpp -o prod-ent -g
*****g++ decryptor.cpp -o decryptor -g -lcryptopp
clean:
*****rm prod-ent
*****rm decryptor

Вместо ***** заменить TAB.

Вы можете проверить свою сторону командой

cat -e -t -v  makefile

Показывает строку, начинающуюся с ^I, если TAB присваивается этой строке, и она заканчивается на строку $.

Также вы можете сделать ;

all: decryptor.cpp prod-ent.cpp ; g++ prod-ent.cpp -o prod-ent -g ; g++ decryptor.cpp -o decryptor -g -lcryptopp
clean: ; rm prod-ent ; rm decryptor