Macros 可以让我在外部文本文件中展开几个宏吗?

Macros 可以让我在外部文本文件中展开几个宏吗?,macros,makefile,Macros,Makefile,我有一个相当大和详细的基于行的配置文件部分。我想将此部分用作模板(假设我要预配置此部分,测试它,然后将实际值替换为$(make)$(宏)),将关键参数(实际上很少)有效地“克隆”此“模板”,并将少量自定义参数替换到工作配置文件中。make能在所述情况下为我完成工作吗 请容忍我,我是一个真正的外行,甚至不确定在这种情况下它是否是正确的工具 一个例子 我正在预配置和测试以下内容: <section0> contains a lot of settings which were test

我有一个相当大和详细的基于行的配置文件部分。我想将此部分用作模板(假设我要预配置此部分,测试它,然后将实际值替换为
$(make)
$(宏)
),将关键参数(实际上很少)有效地“克隆”此“模板”,并将少量自定义参数替换到工作配置文件中。
make
能在所述情况下为我完成工作吗

请容忍我,我是一个真正的
外行,甚至不确定在这种情况下它是否是正确的工具


一个例子 我正在预配置和测试以下内容:

<section0>
contains a lot of settings
which were tested and should 
be exactly the same in every copy 
except marked with trailing0 
</section0>
假设
“section42”
“foo”
“trailing42”
“bar”
分别是
$(section)
$(trailing)
宏的替代品。

您可以在生成文件中使用预处理器来完成以下操作:在模板文件中展开宏:

M4可以称为“模板语言”、“宏语言”或“预处理器语言”。名称“m4”也指用这种语言处理文本的程序:该“预处理器”或“宏处理器”将m4模板作为输入,并在执行任何嵌入式指令(称为宏)后将其发送到输出

创建一个名为
section.m4
的文件:

$ cat section.m4 
<section0>
contains a lot of settings
which were tested and should
be exactly the same in every copy
except marked with trailing0
</section0>

你能提供一个简单的例子来帮助理解你在说什么吗?如果您想要一个由
key=value
行组成的文件来更改
make
的行为,这就是该语句的目的。@AlexCohn,请检查一下,我添加了一个示例,希望它变得更清楚一点。但仍然不确定它是否适用于此。
…除了用条形码标记外
?计算机怎么知道?你说的用横条标记是什么意思?
<section42>
contains a lot of settings
which were tested and should 
be exactly the same in every copy 
except marked with trailing42
</section42>

<foo>
contains a lot of settings
which were tested and should 
be exactly the same in every copy 
except marked with bar
</foo>
$ cat section.m4 
<section0>
contains a lot of settings
which were tested and should
be exactly the same in every copy
except marked with trailing0
</section0>
section.cfg : section.m4
    m4 -Dsection0=foo -Dtrailing0=bar $< >$@