как предотвратить “каталог, уже существует ошибка” в make-файле при использовании mkdir

В Java все находится в форме класса.

Если вы хотите использовать любой объект, тогда у вас есть две фазы:

  1. Объявить
  2. Инициализация

Пример:

  • Объявление: Object a;
  • Инициализация: a=new Object();

То же самое для концепции массива

  • Объявление: Item i[]=new Item[5];
  • Инициализация: i[0]=new Item();

Если вы не дают секцию инициализации, тогда возникает NullpointerException.

107
задан knocte 18 May 2014 в 11:53
поделиться

7 ответов

На UNIX Просто используют это:

mkdir -p $(OBJDIR)

-p опция к mkdir предотвращает сообщение об ошибке, если каталог существует.

105
ответ дан Community 24 November 2019 в 03:34
поделиться

Можно использовать тестовую команду:

test -d $(OBJDIR) || mkdir $(OBJDIR)
66
ответ дан Matthew Simoneau 24 November 2019 в 03:34
поделиться

Если наличие каталога уже существует, не проблема для Вас, Вы могли просто перенаправить stderr для той команды, избавления от сообщения об ошибке:

-mkdir $(OBJDIR) 2>/dev/null
13
ответ дан andrewdotnich 24 November 2019 в 03:34
поделиться

В Вашем make-файле:

target:
    if test -d dir; then echo "hello world!"; else mkdir dir; fi
11
ответ дан Lee H 24 November 2019 в 03:34
поделиться
ifeq "$(wildcard $(MY_DIRNAME) )" ""
  -mkdir $(MY_DIRNAME)
endif
7
ответ дан Michael McCarty 24 November 2019 в 03:34
поделиться
$(OBJDIR):
    mkdir $@

, Который также работает на несколько каталогов, например,

OBJDIRS := $(sort $(dir $(OBJECTS)))

$(OBJDIRS):
    mkdir $@

Добавление $(OBJDIR), поскольку первая цель работает хорошо.

6
ответ дан Martin Fido 24 November 2019 в 03:34
поделиться

В Windows

if not exist "$(OBJDIR)" mkdir $(OBJDIR)

В Unix | Linux

if [ ! -d "$(OBJDIR)" ]; then mkdir $(OBJDIR); fi
9
ответ дан 24 November 2019 в 03:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: