2016-06-07 4 views
1

Условия:Pass файл аргумент через ребенку сделать

  • также файл передается марки: make -f ../makefile hi
  • hi цель также вызывает make

Мне нужен способ для распространения значения от -f до команды суб-команды, запущенной внутри hi.

bye: 
    echo 'whatever' 

hi: 
    ${MAKE} bye 
+0

Итак, вместо жесткого кодирования «привет» вы хотели бы передать все, что было передано из командной строки? Но если «Make target» говорит, что выполнить, «привет» уже знает, что он выполняет «привет»; как это могло быть не так? Возможно, вы могли бы уточнить, что вы сейчас получаете, и то, что вы хотели бы получить вместо этого. – tripleee

ответ

0

Единственная возможность, я в курсе, чтобы использовать MAKEFILE_LIST переменную:

CURR_MAKEFILE:=$(lastword $(MAKEFILE_LIST)) 

bye: 
    echo 'whatever' 

hi: 
    +$(MAKE) -f $(CURR_MAKEFILE) bye 

Но обратите внимание, как написано в официальной документации, что переменные записи все сгенерированным с Makefile, в том числе include ред. Значение переменной является надежным только при запросе в самой верхней части файла makefile, прежде чем он будет включен.

0

Предполагая, что нет по умолчанию Makefile в текущем каталоге (предположительно причина вы передаете -f ../makefile), то ваш пример ../makefile будет работать, как это, если вы вызываете make как:

$ make MAKEFILES=../makefile hi 
make bye 
make[1]: Entering directory '/home/imk/develop/scrap' 
echo 'whatever' 
whatever 
make[1]: Leaving directory '/home/imk/develop/scrap' 

См 3.4 The Variable MAKEFILES

Если является файл по умолчанию в текущем каталоге, то этот подход будет причиной e make, чтобы прочитать файл по умолчанию после того, как он , прочитал ../makefile, с неблагоприятными результатами. В этом случае предпочитайте @ Dummy00001 ответ.