Проверьте, существует ли файл makefile перед его включением
У меня есть файл makefile, который включает файл Rules.mak, который содержит инструменты, которые я хочу использовать. Проблема в том, что папка с инструментами имеет бесплатные опции, если они хотят извлечь версию или использовать "родную" установку. Поэтому я хочу включить инструменты, извлеченные из правил, если он существует, иначе я хочу включить собственный файл.
что-то вроде этой цели:
if Tool/Rules.mak exists then
include Tool/Rules.mak
else
include common/Rules-Tool.mak
fi
Я пробовал либо способ bash, либо способ, но поскольку это предположение для настройки среды, у меня нет целевой спецификации, но вызывают ошибки из-за сбоя проверки.
if [ -f Tool/Rules.mak ]
then
echo testfile exists!
fi
также
if [ -d ./Tool ]
then
echo testfile exists!
fi
а также версии с кавычками и аналогичные. Проблема в том, что почти все время, когда я печатаю, я получаю следующую ошибку:
Rules.mak:14: *** missing separator. Stop.
Ответы
Ответ 1
Вы можете сделать это так (нет if
или else
)
-include Tool/Rules.mak
include common/Rules-Tool
так как вы не получите ошибку, если Tool/Rules.mak не существует. ( "-" делает трюк)
В общем /Rules -Tool вы затем используете оператор? = (оператор условного присваивания переменных) для назначения значений переменной. Этот оператор присваивает значение только в том случае, если переменная еще не существует. IOW, он не перезапишет ранее существовавшее значение. Если Tool/Rules.mak не существует или только частично заполняет переменную common/Rules-Tool, они завершат их.