Я делаю Make-файл, который перемещает выходной файл (foo.o
) к другому каталогу (baz
).
Выходной файл перемещается, как желаемый в каталог. Однако с тех пор делают, не перекомпилирует выходной файл, если я введу make
снова, mv
получает ошибку, когда она пытается переместить несуществующий пустой файл в каталог baz
.
Таким образом, это - то, что я определил в своем правиле make all
после всей компиляции:
-test -e "foo.o" || mv -f foo.o ../baz
К сожалению, я все еще получаю ошибки.
+@[ -d $(dir $@) ] || mkdir -p $(dir $@)
- это то, что я использую для незаметного создания папки, если она не существует. Для вашей проблемы должно работать что-то вроде этого
-@[ -e "foo.o" ] && mv -f foo.o ../baz
-test -e "foo.o" || if [ -f foo.o ]; then mv -f foo.o ../baz; fi;
Это должно сработать
Что-то вроде
test -e "foo.o" && mv -f foo.o ../baz
должно работать: оператор должен быть &&
вместо ||
.
Вы можете поэкспериментировать с этим, попробовав следующие команды:
test -e testfile && echo "going to move the file"
test -e testfile || echo "going to move the file"