6

我有一个遗留的 MS NMAKE Makefile 我需要修复一些错误。

我希望使用“内联文件”的 NMAKE 技巧来调试一些非常长的命令行:

dep:
    cmd @<<tmpfilename
cmd_args..
<<

将线路更改为

dep:
    echo cmd @<<tmpfilename
cmd_args..
<<

NMAKE 抱怨线路太长。

为了查看 NMAKE 实际执行的命令行,我可以应用任何其他技巧吗?

4

2 回答 2

4

为了保留保留命令行的临时文件,请KEEP在 final 之后附加关键字<<。例如

dep:
    echo cmd @<<tmpfilename
cmd_args..
<<KEEP

在这种情况下,发出nmake dep一个名为的文件tmpfilename后将保留,并保存参数列表cmd_args

请参阅此MS 知识库文章中的示例 makefile 2 。这个这个(警告:PDF)是对KEEPandNOKEEP关键字的解释,但我不确定它们是否是专门为 MS NMAKE 编写的。

编辑:以上链接在 2019/08 年被替换,因为它们都已失效。新链接指向似乎包含 OP 在此答案中所指内容的存档副本。

语法在 Makefile 中的内联文件中描述,特别是重用内联文件

于 2009-08-12T08:38:35.890 回答
1

普通的 unix make 支持“make -n”来显示它将运行的命令,对于 nmake,它是“make /n”。但是,make 通常也会尝试变得聪明,并且在任何情况下都会首先运行更新依赖项的规则,即使是“-n”,所以你可以尝试

#dep:
my_test_rule:
    cmd @<<tmpfilename
cmd_args..
<<

然后运行“nmake /n my_test_rule”进行调试。

于 2009-08-11T14:18:00.913 回答