Проверьте, существует ли make-файл, прежде чем включать его - PullRequest
14 голосов
/ 01 декабря 2011

У меня есть make-файл, который содержит файл Rules.mak, который содержит инструменты, которые я хочу использовать. Проблема в том, что в папке инструментов есть бесплатные опции, если они хотят извлечь версию или использовать «родную» установку. Поэтому я хочу включить инструменты извлеченные правила, если он существует, в противном случае я хочу включить собственный файл.

как-то такова цель:

if Tool/Rules.mak exists then
  include Tool/Rules.mak
else
  include common/Rules-Tool.mak
fi

Я пробовал либо способ bash, либо способ make, но поскольку это является предварительным условием для настройки среды, у меня нет цели specik, но я вызываю неправильно из-за неудачной проверки.

if [ -f Tool/Rules.mak ]
then
echo testfile exists!
fi

также

if [ -d ./Tool ]
then
echo testfile exists!
fi

а также версии с кавычками и тому подобное. Проблема в том, что почти все время, когда я печатаю make, я получаю следующую ошибку:

Rules.mak:14: *** missing separator.  Stop.    

1 Ответ

38 голосов
/ 01 декабря 2011

Вы можете сделать это так (без if или else)

-include Tool/Rules.mak
include common/Rules-Tool

, например, вы не получите ошибку, если Tool / Rules.mak не существует.('-' делает трюк)

В Common / Rules-Tool вы затем используете оператор? = ("Оператор условного присваивания переменной"), чтобы присвоить значения переменной.Этот оператор присваивает значение, только если переменная еще не существует.IOW, он не будет перезаписывать ранее существующее значение.Если Tool / Rules.mak не существует или только частично заполняет переменную common / Rules-Tool завершит их.

...