2008-11-20 11 views
0

У меня есть рабочий make, у меня есть код платформы и, как и несколько, для каждого os в папке. Прямо сейчас у меня есть один make-файл, который работает. Я переименовал его в Makefile.ws и написал это в Makefilemakefile call makefile error

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 [email protected] ] || mkdir -p [email protected] 
    @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile 

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

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

+0

Кажется странным, что нет вступительного сообщения от уровня 2 - просто неудача. В каком каталоге вы находитесь, когда начинаете катить мяч? – 2008-11-20 23:35:57

ответ

0

Вы пробовали называя вторичный Makefile использованием

$(MAKE) -f ...

вместо

make -f ...?

1

Во-первых, какой проект вы используете? 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 [email protected] ] || mkdir -p [email protected] 
     ... 

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

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

0

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

mingw32: 
    @[ -d [email protected] ] || mkdir -p [email protected] 
    @make --no-print-directory -C mingw32 -f $(CURDIR)/Makefile
0
  1. Ясно, что он создал каталог, свою первую команду в ваших данных 2 правил, включают в себя MKDIR с именем объекта, то есть либо build, либо mingw32
  2. После этого он переходит в текущий каталог (т. е. вообще нет cd) и выполняет Makefile. Но по мере того как вы написали, вы переименовали Makefile в Makefile.ws, так что, в конце концов, вы получаете ошибку File-Not-Found-error.

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