2014-12-17 2 views
0

Это кажется (и, вероятно, очевидно) очевидным, но я не могу его найти.Где make 'include' найти файлы?

Где make include Ищите файл для включения? Как это:

# /mydir/makefile 
include basemakefile 

где файл basemakefile находится где-то еще, что я не хочу, чтобы жестко закодировать. Обновление $PATH не работает для меня.

EDIT: то, что я действительно искал, было переменной окружения, контролирующей это. Нет PATH, но, как Etan, вы можете использовать MAKEFLAGS=-I/my/path/. Нужно ли вам злоупотреблять MAKEFLAGS, как это сомнительно.

ответ

1

С самого раздела руководства вы связаны с:

Если указанное имя не начинается с косыми чертами, а файл не найден в текущем каталоге, ищутся несколько других каталогов. Сначала ищутся все каталоги, которые вы указали с помощью опции «-I» или «--include-dir» (см. «Сводка параметров»). Затем выполняются поиск следующих каталогов (если они существуют) в следующем порядке: префикс/include (обычно/usr/local/include)/usr/gnu/include,/usr/local/include,/usr/include.

+0

Итак, нет переменной окружения, которую я мог бы установить для управления этим? – Mark

+0

Не то, чтобы я знал. Вы можете * использовать здесь 'vpath' /' VPATH', но я бы не стал делать ставку на него (я полагаю, что это может сработать, чтобы найти makefile для перестройки и его предварительные условия, но затем не загружать его) , –

+1

О, я полагаю, что «MAKEFLAGS = -I ...» считается «переменной среды». –

1

Комментарий Etan является правильным ответом, для отредактированной версии вопроса. Делайте это в среде

export MAKEFLAGS=-I/my/path 

Это не злоупотреблять, это нормальное использование переменной MAKEFLAGS, покрытое в Руководство по GNU Make.

+0

Я в шоке, вы в порядке с зависимостью от факторов окружающей среды для вашей функциональности сборки. (Я имею в виду, я знаю, что вы сказали, что ваши условия очень контролируются, но все же.) –

+0

@EtanReisner Да! Даже очень. Я сделал поговорку: «Призыв Марка без обертки - это как кататься на лошади без седла - возможно, но больно». У меня всегда есть оболочка, которая настраивает всю среду, которая может повлиять на поведение Make, затем вызывает Make, а затем фильтрует выход (синтаксическая раскраска и диагностика). Все пользователи должны вызывать обертку. –

+0

@EtanReisner Мне нужно сделать это так: я не пишу make-файлы для своих собственных проектов, но, будучи консультантом, я пишу систему для использования, возможно, сотнями инженеров, а затем меня зовут для поддержки. Я должен положить в руководство, не удалять файлы вручную, без вызова Make без обертки и т. Д., Иначе, если вы это сделаете, вам лучше знать, что вы делаете, потому что я не буду поддерживать вас ,Когда вы делали что-то, что вам не нужно было делать, и возникает непредвиденное поведение, очистите и начните. –

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