2016-02-29 13 views
0

Для школьного проекта я пробую с make-файлами. Сначала я создаю файлы сMakefile удалить файлы

install: main.c 
    gcc -asve-temps main.c 
    @if test ! -d bin/; then mkdir bin; else : fi 
    mv a.out $(shell pwd)/bin/ 
    chmod 555 ./bin/a.out 

Теперь я хочу, чтобы очистить проект:

clear: 
@if test -d *.[osia]; then rm *.[osia] else : ; fi 
@if test -d a.out then rm a.out; else: ; fi 

Running делает установку работает отлично. Запуск make clear производит код ошибки:

/bin/sh: 1: test: main.i: unexpected operator 

и не удаляет запрошенные файлы. Я хочу, чтобы удалить все *.o *.s *.i and *.a файлы, запустив make clear цели, используя шаблон приведенный выше избежать ошибки cannot remove ... : no such file or directory

ответ

2

test ожидает один аргумент; когда вы передаете ему глобус, он получает кучу. Что-то вроде find будет работать в этом случае:

find . -maxdepth 1 -name '*.[osia]' -delete 

Или, почему проверить, если файл существует вообще?

rm -f *.[osia] 

Пара других примечаний: если вы не имеете else пункт в вашем заявлении, если не включить его. Прочитайте команду test; вы, конечно, не хотите использовать -d, если вы ищете файлы. И вы можете использовать переменную $PWD вместо запуска подоболочки, чтобы получить ее.

Смежные вопросы