首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >m4宏自动生成文件

m4宏自动生成文件
EN

Stack Overflow用户
提问于 2015-01-07 15:53:11
回答 1查看 262关注 0票数 0

我下载了一些我想要做一些更改的胶乳包,但是在这个包中存在文件include.m4,我不知道它是干什么的,也不知道它是如何生成的。在这里,它的台词:

代码语言:javascript
复制
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

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

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

代码语言:javascript
复制
M4FLAGS = -P -Dm4_ESKDX_INIT="m4_include($(TOP_DIR)/include.m4)" \
  -Dm4_ESKDX_VERSION=$(VERSION) -Dm4_ESKDX_DATE=$(RELEASE_DATE)

和规则:

代码语言:javascript
复制
%.def: %.def.in $(M4DEPS)
    m4 $(M4FLAGS) $< >$@
%.sty: %.sty.in $(M4DEPS)
    m4 $(M4FLAGS) $< >$@
%.cls: %.cls.in $(M4DEPS)
    m4 $(M4FLAGS) $< >$@

如我所见,GNU m4 options '-D‘将.sty .cls文件中的宏m4_ESKDX_INIT替换为m4_include(./m4_include.m4),然后options '-P’首先扩展文件include.m4,然后在include.m4中扩展宏。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-07 16:18:03

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

关于自动生成的消息应该以注释的形式出现在最终文件中。正如我们在Makefile中的规则中所看到的,每个.def.sty.cls文件都是由一个同名的.in文件生成的(因此result.cls将由result.cls.in构建)。通过计算这些文件中的宏并用等效项替换它们。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27823284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档