GNU m4 宏自动生成的文件



我下载了乳胶包,我想在其上进行一些更改,但是在此包中存在文件include.m4,我不知道它的作用以及它是如何生成的。这是它的行:

m4_changequote([[, ]])m4_dnl
m4_dnl
m4_define([[m4_FILE_INIT]], [[m4_dnl
%
% This is automaticaly generated file, do not edit it.
%
]])m4_dnl
m4_dnl
m4_define([[m4_FILE_ID]], [[m4_dnl
m4_patsubst([[$1]], [[$Date::? ([0-9]+)-([0-9]+)-([0-9]+).*]], [[1/2/3]])m4_dnl
 v[[]]m4_ESKDX_VERSION]])m4_dnl
m4_dnl
m4_define([[m4_FILE_DATE]], [[m4_dnl
m4_patsubst([[$1]], [[$Date::? ([0-9]+)-([0-9]+)-([0-9]+).*]], [[1/2/3]])]])m4_dnl
m4_dnl

你能解释一下它是用哪个工具生成的吗?

谢谢。所以这个文件不是自动生成的?你能帮我理解 Makefile 中的这些行吗:

M4FLAGS = -P -Dm4_ESKDX_INIT="m4_include($(TOP_DIR)/include.m4)" 
  -Dm4_ESKDX_VERSION=$(VERSION) -Dm4_ESKDX_DATE=$(RELEASE_DATE)

和规则:

%.def: %.def.in $(M4DEPS)
    m4 $(M4FLAGS) $< >$@
%.sty: %.sty.in $(M4DEPS)
    m4 $(M4FLAGS) $< >$@
%.cls: %.cls.in $(M4DEPS)
    m4 $(M4FLAGS) $< >$@

正如我所看到的,GNU m4 选项 '-D' 将 .sty .cls 文件中的宏m4_ESKDX_INIT替换为 m4_include(../include.m4),然后选项"-P"首先展开文件 include.m4,然后进一步扩展 include.m4 中的宏。

这是 GNU m4 宏处理器的宏。此文件旨在与-P--prefix-builtins命令行选项一起使用。当 m4 评估此文件时,m4_部分将被剥离。这个文件本身不做任何事情,它只是定义了三个宏(FILE_INITFILE_IDFILE_DATE),它们可能会在另一个步骤中使用。您可能希望在其他文件中查找对此文件的引用。基本思想是在通过 m4 运行另一个文件之前加载此文件,它将替换这些宏。

关于自动生成的消息应该作为注释最终出现在最终文件中。正如我们在 Makefile 中的规则中看到的,每个.def.sty.cls文件都是从等效命名的.in文件生成的(因此result.cls将从result.cls.in构建。 通过评估这些文件中的宏并用等效的宏替换它们。

因此,要修改这些文件,您需要编辑.in文件。

相关内容

  • 没有找到相关文章

最新更新