вы должны удалить интервал вокруг косой черты или разбор аргументов, полагая, что существует более одного аргумента (и вы также можете забыть о создании $(OBJDIR)
, потому что опция -p
создает все несуществующие директории для целевого каталога:
Совместимость с Unix / Linux должна быть:
objdir:
mkdir -p $(OBJDIR)/S4k
mkdir -p $(OBJDIR)/modules
Обратите внимание, что при использовании команды Windows mkdir
параметр -p
должен быть удален (версия для Windows делает это по умолчанию и что опция не распознается). Учитывая сообщение, которое вы получаете, вы, вероятно, используете версию Windows, так что это должно быть:
objdir:
mkdir $(OBJDIR)\S4k
mkdir $(OBJDIR)\modules
(косые черты not приняты по команде Windows mkdir
, поэтому $(OBJDIR)
также должен быть построен с обратными косыми чертами).
косые черты используются для командных переключателей в основных командах, таких как mkdir
, иначе вам нужно процитировать пути
objdir:
mkdir "$(OBJDIR)/S4k"
mkdir "$(OBJDIR)/modules"
(как вы видите, довольно сложно иметь переносимый makefile от Linux до Windows, если вы не запускаете его в оболочке MSYS, где mkdir
является MSYS, и имейте в виду, что есть native & amp , Версии MSYS e make
тоже, я попал один раз: Как заставить make использовать bash в качестве оболочки в Windows / MSYS2 )