make期间自动生成conf文件

时间:2011-09-28 03:42:52

标签: bash automation sed makefile

我的conf文件格式为:

名=值

我想要做的是使用模板,根据另一个文件中的某些值生成结果。

例如,假设我有一个名为PATHS的文件,其中包含

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

此PATHS文件包含在Makefile中,因此当我调用make install时,会创建路径并正确复制构建的应用程序和conf文件。

现在我还有一个conf文件,我想用它作为模板。

假设模板包含

之类的行

日志文件= $(LOG_DIR)/myapp.log ...

然后生成一个具有

的目标conf

=日志文件的/ var /日志/ myapp.log ... 等

我认为这可以使用sed脚本完成,但我对sed和正则表达式语法不是很熟悉。我也会接受shell脚本版本。

2 个答案:

答案 0 :(得分:0)

您可能希望将using m4视为简单的模板语言。

答案 1 :(得分:0)

你绝对应该选择autoconf,他的工作就是这样做。您必须编写一个conf.in文件,其中所有替换都标有@'s,例如

prefix=@prefix@
bindir=@bindir@

并编写一个configure.ac,这是一个shell脚本,它将为您执行这些替换并创建conf。 conf随后包含在Makefile中。我甚至建议使用Makefile.in文件,即在Makefile中包含你的代码片段。

如果你保持标准路径名,你的configure.ac是一个四线程,并具有兼容GNU(易于理解和使用)的附加优势。