Автоматически генерировать файл conf во время make - PullRequest
0 голосов
/ 28 сентября 2011

У меня есть файл conf в формате:

имя = значение

Я хочу использовать шаблон, сгенерировать результат на основе некоторых значений в другом файле.

Так, например, скажем, у меня есть файл с именем PATHS, который содержит

CONF_DIR=/etc
BIN_DIR=/usr/sbin
LOG_DIR=/var/log
CACHE_DIR=/home/cache

Этот файл PATHS включается в Makefile, поэтому при вызове make install пути создаются и создаются приложения.и файлы conf скопированы соответствующим образом.

Теперь у меня также есть файл conf, который я хочу использовать в качестве шаблона.

Скажем, шаблон содержит строки типа

LogFile = $ (LOG_DIR) /myapp.log ...

Затем сгенерируйте целевой файл conf, который будет иметь

LogFile = / var / log / myapp.log ... etc

IЯ думаю, что это можно сделать с помощью сценария sed, но я не очень знаком с синтаксисом sed и регулярных выражений.Я также приму версию сценария оболочки.

Ответы [ 2 ]

0 голосов
/ 28 сентября 2011

Вы обязательно должны использовать здесь autoconf, чья работа заключается в том, чтобы сделать это.Вам нужно написать файл conf.in, в котором все замены помечены символом @, например

prefix=@prefix@
bindir=@bindir@

, и написать файл configure.ac, который представляет собой скрипт оболочки, который будет выполнять эти замены.для вас и создать конф.Conf впоследствии включается в Makefile.Я бы даже порекомендовал использовать файл Makefile.in, т.е. включить ваш фрагмент в Makefile.

Если вы придерживаетесь стандартных имен путей, ваш configure.ac является четырехстрочным и имеет дополнительное преимущество:совместимость с GNU (легко понять и использовать).

0 голосов
/ 28 сентября 2011

Вы можете рассмотреть , используя вместо этого m4 в качестве простого языка шаблонов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...