2014-01-06 3 views
0

Как использовать MAKEFILES переменная среда? Я пишу в bash MAKEFILES=/home/toker/mymake, но если я запускаю /home/toker/bundocode/gettingstart/testMF/Makefile, то /home/toker/mymake не выполняется. Когда я напечатаю $MAKEFILES в bash, тогда отображается bash: /home/toker/mymake: Permission denied.MAKEFILES переменная среда

+0

Если '.../testMF/Makefile' является make-файлом, а'/usr/toker/mymake' также является make-файлом, то *, который вы пытаетесь использовать? * – Beta

+0

@Beta Следующее письмо http: //www.gnu.org/software/make/manual/make.html#MAKEFILES-Variable сказал, что: Если определена переменная среды MAKEFILES, make считает ее значение как список имен (разделенных пробелами) дополнительных файлов makefile читать перед другими. Сначала я не могу установить значение переменной среды, которое разделяется пробелом. Во-вторых, я установил эту переменную в make-файл, который я хочу обработать до другого. Это '/ home/toker/mymake', но обработка не обрабатывается. –

+0

Вы можете абсолютно установить переменную в значение, содержащее пробелы. Просто укажите это: 'export MAKEFILES ="/some/file/some/other/file "'. Что касается того, почему это не работает, я ожидаю, что вы забыли экспортировать переменную; это то, что вам нужно понять о оболочке, а не делать. Если вы запустите 'env | grep MAKEFILES' вы видите свой вывод? Вам следует. – MadScientist

ответ

0

Переменная MAKEFILES содержит один или несколько файлов make-файлов, а не программу make. Из приведенных выше сообщений выглядит, что mymake - это программа make, которую вы пытаетесь запустить. Оболочка решает, какие программы запускать (просматривая каталоги, перечисленные в переменной среды $PATH), и оболочка не обращает особого внимания на переменную MAKEFILES. Только один раз make работает, он смотрит на переменную MAKEFILES, чтобы увидеть, какие другие make-файлы он может использовать для синтаксического анализа.

Что имеется в файле /usr/toker/mymake? Что вы подразумеваете под запуском .../Makefile? Один обычно работает make, а не make-файл. Затем сделайте чтение в make-файле. Есть способы изменить make-файл, чтобы быть исполняемым, но я не думаю, что это то, что вы ищете здесь.

ETA:

Если файл /usr/toker/mymake фактически Makefile (BTW, конвенция обычно использует .mk расширения для обозначения мейкфайлов хотя нет на самом деле официального расширения), то вы можете сделать это:

$ cat /usr/toker/mymake 
$(info loaded /usr/toker/mymake) 
foo: ; @echo building [email protected] 

$ export MAKEFILES=/usr/toker/mymake 

$ cat Makefile 
bar: foo ; @echo building [email protected] 

$ make 
loaded /usr/toker/mymake 
building foo 
building bar 

Если вы можете показать пример того, что вы сделали (покажите make-файл и команды, которые вы набрали, и полученные результаты), и объясните, что вы не понимаете в этом, тогда мы можем видеть гораздо точнее то, что происходит, чем вы пытаясь описать это словами).

+0

_Что находится в файле/usr/toker/mymake? _ Это makefile, а не программа. –

+0

_Что вы имеете в виду под управлением .../Makefile? _ Я имею в виду, что я выполняю команду 'make'. –

+0

Как использовать переменную 'MAKEFILES'? Где я ошибаюсь? –

Смежные вопросы