makefile 跳过生成一个可执行文件的可能原因是什么?

What's the possible reason that makefile would skip making one executable?

然后我尝试为那个跳过的文件执行完全相同的编译命令,并且它正在被正确编译。但是当我把它放在 make 文件中时,它就被跳过了。生成每个其他文件。

在没有真正看到 makefile(你没有提供)的情况下,我们只能猜测(虽然我想认为这是一个 受过教育的 猜测) .

由于 make 通过检查文件时间戳来查看它们是否需要重建,因此这是一回事。如果目标的时间戳晚于所有依赖项的时间戳,则不会构建目标。

另一个是确保您的顶级规则实际上依赖于您在层次结构中某处尝试构建的内容。我的意思是规则集:

all: xyzzy

xyzzy:
    touch xyzzy

plugh:
    touch plugh

使用命令 make all 永远不会 触摸 plugh 因为它不在 all.

的依赖层次结构中

make 通常提供用于调试的命令行选项(如 GNU Make 中的 -d 标志)这将告诉您 为什么 它正在做出决定它正在制作。如果您想了解正在发生的事情,您可能应该使用它们,因为它使调试您的 makefile.

变得容易得多