вызов makefile ошибка makefile - PullRequest
0 голосов
/ 21 ноября 2008

У меня есть рабочая марка, у меня есть код платформы и несколько разных марок для каждой ОС в папке. Прямо сейчас у меня есть один make-файл, который работает. Я переименовал его в Makefile.ws и написал это в Makefile

all:
    make -f Makefile.w32

clean:
    make -f Makefile.w32 clean

Я запустил его и получил эту ошибку

> "make" 
make -f Makefile.w32
make[1]: Entering directory `/c/nightly/test'
make -f Makefile.w32
make[3]: Makefile.w32: No such file or directory
make[3]: *** No rule to make target `Makefile.w32'.  Stop.
make[2]: *** [all] Error 2
make[1]: *** [build] Error 2
make[1]: Leaving directory `/c/nightly/test'
"make": *** [all] Error 2

Как ни странно, чисто работает отлично. Тогда я решил написать «make -f Makefile.w32 mingw32», и это не сработало правильно. На самом деле он создал папку с именем mingw32, которая, на мой взгляд, была очень странной.

Что касается правила mingw32, я просто копирую сборку, которая, как я подозреваю, является основным / обычным правилом, используемым для сборки

$(BUILD):
    @[ -d $@ ] || mkdir -p $@
    @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile

mingw32:
    @[ -d $@ ] || mkdir -p $@
    @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile

полный источник .w32 здесь http://pastie.org/320035

Ответы [ 4 ]

1 голос
/ 21 ноября 2008

Во-первых, что ты делаешь? Cygwin или MinGW, или что-то еще?

make -f Makefile.w32
make[1]: Entering directory `/c/nightly/test'
make -f Makefile.w32 
make[3]: Makefile.w32: No such file or directory

«Вход в каталог» - это подсказка. Почему он входит в / c / nightly / test? Там есть Makefile.w32?

Что касается создания каталога "mingw32", то правило

mingw32:
        @[ -d $@ ] || mkdir -p $@
        ...

делает именно это. Если «mingw32» не существует, он создает его.

Было бы легче помочь вам, если бы вы имели более короткий пример и четко объяснили, чего вы хотите достичь и чего вы ожидаете.

0 голосов
/ 21 ноября 2008
  1. Понятно, что он создал каталог, Ваша первая команда в указанных вами 2 правилах включает mkdir с именем объекта, то есть либо build, либо mingw32
  2. После этого он переходит в текущий каталог (т. Е. Вообще без компакт-диска) и запускает Makefile. Но когда вы писали, вы переименовали Makefile в Makefile.ws, так что, конечно, вы получаете File-Not-Found-error.

Из вопросов я могу только порекомендовать вам взглянуть на краткое введение или, что еще лучше, руководство по изготовлению.

0 голосов
/ 21 ноября 2008

Мне кажется, я вижу проблему во втором примере. Строка mingw32 должна быть изменена, чтобы она не включала переменную $ (BUILD):

mingw32:
    @[ -d $@ ] || mkdir -p $@
    @make --no-print-directory -C mingw32 -f $(CURDIR)/Makefile
0 голосов
/ 21 ноября 2008

Вы пытались вызвать вторичный make-файл, используя

$(MAKE) -f ...

вместо

make -f ...

...