как предотвратить "ошибка каталога уже существует" в make-файле при использовании mkdir - PullRequest
106 голосов
/ 19 сентября 2008

Мне нужно создать каталог в моем make-файле, и я хотел бы, чтобы «ошибка каталога уже существовала» снова и снова, даже если я могу легко ее игнорировать.

Я в основном использую mingw / msys, но хотел бы что-то, что работает и в других оболочках / системах.

Я пробовал это, но это не сработало, есть идеи?

ifeq (,$(findstring $(OBJDIR),$(wildcard $(OBJDIR) )))
-mkdir $(OBJDIR)
endif

Ответы [ 12 ]

0 голосов
/ 10 сентября 2015

Если вы явно проигнорируете код возврата и сбросите поток ошибок, то ваш make проигнорирует ошибку, если она возникнет:

mkdir 2>/dev/null || true

Это не должно вызывать опасность гонки при параллельном производстве, но я не проверял это, чтобы быть уверенным.

0 голосов
/ 30 июня 2013

Немного проще, чем ответ Ларса:

something_needs_directory_xxx : xxx/..

и общее правило:

%/.. : ;@mkdir -p $(@D)

Нет сенсорных файлов для очистки или создания. ДРАГОЦЕННЫЙ: -)

Если вы хотите увидеть еще один небольшой общий трюк gmake, или если вы заинтересованы в нерекурсивном марке с минимальными лесами, вы можете проверить Два более дешевых трюка gmake и другие сообщений в этом блоге.

...