问题标签 [m4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
336 浏览

linux - (宏语言处理器 m4)我如何运行 resp。在 Ubuntu 13.4 上编译 .m4 程序?

我从这个站点安装了 m4:http ://www.geeksww.com/tutorials/libraries/m4/installation/installing_m4_macro_processor_ubuntu_linux.php

到目前为止,一切都很好。该软件包中还包含一些示例。如果我尝试运行这些示例,它只会给我带来一些错误等。

现在,我真的是 ubuntu(和一般的 linux)的菜鸟。

我试图像这样运行程序:

现在,我想那./是绝对错误的,这意味着我必须以其他方式去做。你有什么帮助吗?

0 投票
1 回答
543 浏览

c++ - 元编程和运行时代码生成

我有一个要求,我需要在运行时生成函数参数。在编译时,我不知道参数的数量或它们的类型。它必须在运行时从文件中读取,生成代码并动态加载。

我之前用过M4宏生成语言。它以牺牲可读性和可用性为代价提供了出色的性能。

这次我不想走那条路,正在考虑使用 C++11 Variadic 模板。

有更好的选择吗?

0 投票
1 回答
429 浏览

m4 - 字符串比较和宏 OR 条件

在 M4 语言中,有没有一种方法可以将字符串参数与两个值进行比较,如果这两个值中的任何一个匹配,则执行 X,执行其他 Y?

例如,如果 MACTEST 宏的参数是“ABC”或“XYZ”,则显示“匹配”,否则显示“不匹配”......看起来 eval 用于比较数字参数而不是字符串......有字符串等价的东西?

0 投票
1 回答
1008 浏览

c++ - 使用 Flex 和 Bison 生成 C++ 头文件时如何使用 m4?

我有一个关于使用 C++ m4 宏的问题。我正在尝试编译其他人的代码,并且在其中一个头文件中有一行如下所示:

这当然会在尝试编译代码时返回错误:

b4_copyright安装野牛的 c.m4 文件中的定义是:

我认为当flex和bison生成头文件时会发生错误。由于某种原因,当 Bison 遍历已解析的代码时,它不会像应有的那样抑制 m4 宏(在本例中为 b4_copyright)的输出。当它创建头文件时,它会从它运行的宏的标准输出中留下行。为什么会这样做?

根据 c.m4 文件(b4_copyright 的定义所在的位置),应该禁止输出。c.m4 文件也使用来自 m4sugar.m4 的定义。然而,这些定义似乎并未应用于 c.m4 文件中的任何地方,因为它没有使用 m4_divert 函数(在 m4sugar.m4 中定义)来抑制输出,就像我认为的那样。

0 投票
1 回答
678 浏览

m4 - 如何定义接受可变参数的 M4 宏?

如何定义一个接受可变数量参数并处理每个参数的 M4 宏?我看过“shift”和“foreach(来自示例)”宏,但似乎无法使用它们组合我自己的宏。谢谢你的帮助。

0 投票
2 回答
152 浏览

macros - 如何引用 m4 宏中的最后一个参数

如何引用 m4 宏中给定参数列表中的最后一个参数?我需要提取最后一个参数并基于该参数生成宏扩展。

0 投票
0 回答
117 浏览

macros - 如何检查宏参数?

如何在其他宏的定义中引用宏的参数?

例如,FOO(abc) 是一个宏。假设我想编写一些其他宏“BAR”,它首先检查 FOO 的参数,如果是“abc”,则扩展为一行,如果不是,则扩展为另一行。

BAR(如果 FOO_arg 是 abc) {做这个} else {做这个}

如何使用 m4 宏来实现?

0 投票
1 回答
2292 浏览

autotools - 用于 python2 和 python3 的 AM_PATH_PYTHON

我正在使用 automake 的宏AM_PATH_PYTHON来查找pythondir变量。

到目前为止,我一直在不带参数地调用它,在 Ubuntu 上默认为 python 2.7。现在我也想为python3.x(特别是3.3)构建它。

有没有一种方法可以调用AM_PATH_PYTHON([3])get python3.3,将所有生成的变量存储AC_SUBSTpython3特定变量中,然后调用AM_PATH_PYTHON([2])for python2

我正在这样做

即使在完成所有这些之后,第二个AM_PATH_PYTHON也不会重写变量。我知道这些是宏,但应该有办法做到这一点。Makefile 显示

0 投票
1 回答
395 浏览

fortran - 自定义 .m4 宏不适用于 configure.ac

我正在尝试将一个神秘的科学 F77 程序更新到现代世界,使其更容易安装 w/a .configure 脚本。然而,事实证明,这比宣传的要困难得多。我将踢腿和尖叫拖入 21 世纪的程序需要 SuperMongo 绘图库,我试图弄清楚如何让 Automake 为必要的 SuperMongo 库(libplotsub.a、libdevices.a 和libutils.a) 我创建了一个骨架 github 存储库 ( https://github.com/Acetylene5/autoconf_testing ),而不是让你们善良的灵魂查看代码的内容。

主程序为test.f,调用junk.f文件。这两个文件都包含 Stuff.com 通用块。文件 junk.f 调用了两个函数:一个(dcopy)来自 LAPACK 库,另一个(drawcurs)来自 SuperMongo 程序。我这样做的原因是因为我快进出石器时代的这个程序同时使用了这两个库。

我在互联网上发现了一个 LAPACK 宏 (ax_lapack.m4),它似乎可以在我的系统上找到 LAPACK 库。我试图将此 .m4 文件复制到 ax_supermongo.m4,并更改必要的名称和目录。但是,我不是 M4 专家,所以我不知道这是否符合我的要求。我不认为是,因为如果您查看 ./configure 的输出,它似乎没有找到 sm_graphics 文件(ax_supermongo.m4 使用的令牌 supermongo 例程到 SM 库的位置):

在我的系统上,Supermongo 库位于:/usr/local/misc/sm/sm2_4_36/lib/

关于如何让 autoconf 查看此目录或可能使用命令行变量在此处传递目录的任何建议?

如果您需要更多信息,请告诉我。

凯西

0 投票
1 回答
2700 浏览

ocaml - 安装 ocamlfind.1.3.3 配置时出错:m4 不在 PATH 中;这是必需的

配置:m4 不在 PATH 中;这是必需的

我想知道如何解决这个问题。

非常感谢!(我试图将 m4 文件夹复制到该路径,但它不起作用)