在 Watcom makefile 中扩展宏时 *$ 是啥意思?

Posted

技术标签:

【中文标题】在 Watcom makefile 中扩展宏时 *$ 是啥意思?【英文标题】:What does *$ mean when expanding macros in a Watcom makefile?在 Watcom makefile 中扩展宏时 *$ 是什么意思? 【发布时间】:2019-03-13 12:47:36 【问题描述】:

我在一个遗留项目中有一组特殊的 makefile。它们由 Watcom 制作处理,但它们似乎具有 NMAKE 文件格式。我经常遇到以下构造:

*$(_cmd_run)

$(_cmd_run) 只是一个宏扩展,但在这种情况下,美元符号前还有一个星号。我似乎找不到任何关于其目的的文档。 NMAKE 文档没有关于此语法的任何内容。我什至尝试查找 Open Watcom 源文件,但无济于事。

这个星号代表什么?

【问题讨论】:

【参考方案1】:

这是在 DOS 下处理“长”命令行的一种解决方法,因此可以安全地删除它。在 WMAKE 的帮助下:

在 DOS 下,星号前缀 (*) 将导致 Make 检查命令参数的长度。如果太长(> 126 个字符),它将把命令参数填充到临时环境变量中,然后以“@env_var”作为参数执行命令。

【讨论】:

哇!我已经失去了得到这个问题答案的希望。你介意告诉我哪个 WMAKE 的 doc 文件包含这些信息吗?我查看了它们,但我自己的搜索没有结果,谷歌也沉默了。 @Malcolm WMAKE 手册在原始发行版或 OpenWatcom tools.pdf 中的 WATCOM 的“C/C++ 工具用户指南”(tools.chm,或任何文件格式)中。

以上是关于在 Watcom makefile 中扩展宏时 *$ 是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

Open WATCOM指南 - 哦这样的孤单 你冷若冰霜

在 Makefile 中处理多个扩展的优雅方式

Makefile :从变量中按扩展名选择文件

Visual Studio - 如何在运行宏时禁用自动格式化/更正?

在 f2c.h 文件中定义 min() max() 宏时出错

Makefile项目管理-----在Linux下编译c/c++程序