<命令行>:错误:在makefile中</command-line>

时间:2011-03-28 06:26:38

标签: makefile gnu-make

我正在尝试使用make实用程序编译大量文件。在运行之间,我多次得到以下错误

<command-line>: error: macro names must be identifiers

由于我使用-j选项,因此日志显示随机线程的输出。因此,很难确定遇到此错误的实际文件。也不会弹出其他错误。有人可以告诉我这个错误究竟是什么意思?

3 个答案:

答案 0 :(得分:2)

这不是来自make的错误消息,而是来自预处理器(由make调用)的错误消息。 正如其他人所说的那样,运行make而不使用-j选项(从开始,或make -j失败后),以更清楚地查看错误源自何处。

答案 1 :(得分:2)

这是来自C预处理器。当您将-D开关传递给带有无效符号或根本没有符号的gcc时,通常会发生这种情况。

根本原因可能是你的makefile中的一行,如

CFLAGS=-g -D$(DEBUG)

或类似的东西,其中DEBUG实际上并未在任何地方定义。

答案 2 :(得分:0)

并非所有Makefile都可以使用-j进行编译。有时您只需要多次运行make -j,然后项目将一直构建到最后。而且,一旦失败,您就可以随时取消-j,并尝试在任何时候使用单个流程完成构建。在尝试调试某些东西时,这可以极大地减少不可预测性,同时仍然对编译器使用并行构建作业(或者几乎所有,如果你很幸运)。

我无法追踪make(1)中构成标识符的内容,但在大多数语言中,限制通常都是这样的:“第一个字符必须是[a-zA-Z],所有其他字符必须是[a-zA-Z0-9_]“。我想make(1)的规则是相似的。