Makefile |Очистка после Make - Ошибка: Нет такого файла или каталога |Ошибка: рецепт для цели * не удался - PullRequest
1 голос
/ 26 сентября 2019

Ситуация

Попытка очистки после компиляции Makefile.

Ошибки

Это ошибки, которые я обычно получаю, пытаясь провести, как я полагаю,простая операция очистки.

Ошибки:

Команда:

make linux

g++ Main.o CHARACTER.o ATTRIBUTES.o -o bin/release/Player.sh find *.o -type f -delete  
g++: error: find: No such file or directory
g++: error: f: No such file or directory
g++: error: unrecognized command line option ‘-type’; did you mean ‘-pipe’?

Команда:

make linux

g++ Main.o CHARACTER.o ATTRIBUTES.o -o bin/release/Player.sh rm -f *.o
g++: error: rm: No such file or directory
g++: error: unrecognized command line option ‘-f’

Команда:

make linux

g++ Main.o CHARACTER.o ATTRIBUTES.o -o bin/release/Player.sh clean
g++: error: clean: No such file or directory
Makefile:2: recipe for target 'linux' failed

Makefile

linux: Main.o CHARACTER.o ATTRIBUTES.o
    g++ Main.o CHARACTER.o ATTRIBUTES.o -o bin/release/Player.sh clean

(alternate command attempt)
    g++ Main.o CHARACTER.o ATTRIBUTES.o -o bin/release/Player.sh -rm -f *.o

(alternate command attempt)
    g++ Main.o CHARACTER.o ATTRIBUTES.o -o bin/release/Player.sh find *.o -type f -delete

win32: Main.o CHARACTER.o ATTRIBUTES.o
    g++ Main.o CHARACTER.o ATTRIBUTES.o -o bin/release/Player.exe cleanWin

main.o: Main.cpp
    g++ -c Main.cpp

CHARACTER.o: src/CHARACTER.cpp include/CHARACTER.h
    g++ -c src/CHARACTER.cpp

ATTRIBUTES.o: src/ATTRIBUTES.cpp include/ATTRIBUTES.h
    g++ -c src/ATTRIBUTES.cpp

clean:
    rm -f *.o

cleanWin:
    del *.o

Резюме

Все, кроме процедуры очистки, работает нормально, однако, после попытки очистки я ошибаюсь для функций, которые однозначно доступны во всей моей ОС, будь то Win32 или Linux.Не могу понять, почему эти простые команды обычно имеют проблемы.

Похожие сообщения

Хотя моя проблема похожа на следующий пост(s), их решения, по-видимому, не имеют никакого эффекта.

1 Ответ

3 голосов
/ 26 сентября 2019

Вы добавляете find *.o -type f -deletefind *.o -type f -delete и другие команды очистки в качестве аргументов для g++.Поместите ; между командами.Пример:

linux: Main.o CHARACTER.o ATTRIBUTES.o
        g++ Main.o CHARACTER.o ATTRIBUTES.o -o bin/release/Player.sh ;
        clean

Обратите внимание, что эта цель, linux, на самом деле не создает файл linux.Он создаст двоичный файл с именем bin/release/Player.sh, который является действительно плохим именем для двоичного файла..sh обычно зарезервирован для сценариев оболочки.

...