目标在 Makefile 中的作用是什么?

Aqu*_*irl 4 c linux makefile target

我的印象是冒号的左侧:代表即可target执行文件,而右侧代表“依赖项”,即生成所述目标所需的文件。

hello : hello.c
    gcc hello.c -Wall -o hello
Run Code Online (Sandbox Code Playgroud)

所以,我认为目标 'hello' 是最终可执行文件的名称。

executableHelloWorldFile : hello.c
    gcc hello.c -Wall -o hello
Run Code Online (Sandbox Code Playgroud)

但是,当我将“hello”更改为“executableHelloWorldFile”时,输出中没有任何变化。

我知道如何创建目标,但在这里我想了解targetMakefile 有什么帮助?

小智 8

首先,假设 Target 是一个 file,如果它不存在或其时间戳晚于其任何依赖项,则重新制作。如果您将目标名称从实际文件名更改为随机名称,则您的目标将始终被重新制作,因为您用来愚弄 make 的任意文件不存在,并且在 make 运行您指定的命令时不会创建它。

编辑:你的编译器不知道 make 调用它,它完全执行你给它的指令(每个计算机程序都这样做并且应该这样做)。如果您说“-o hello”,它会将二进制文件写入文件“hello”,而不管您想出的虚假目标名称如何。

  • 输出文件的名称为“hello”,因为您的规则是“-o hello”;) (2认同)
  • 不 - 目标*不一定*是输出文件的名称!!!!那只是一个约定。并且有支持该约定的元字符(例如 $< 和 $*)。 (2认同)

use*_*679 3

Amake target基本上是您想要重建的文件。

Make 无法预测你想要构建什么,所以你必须隐式或显式地告诉它它应该构建什么。通常,文件中的第一个目标是诸如“all”之类的名称,如果您在没有任何显式目标的情况下运行“make”,它将构建 makefile 中列出的第一个目标。然而,有些 makefile 没有指定任何目标;那么您必须在命令行上指定一个。或者,如果您不想构建默认目标,则必须指定您想要构建的目标。

A 遗嘱makefile通常包含用于制作程序、安装程序、之后清理以及其他事情的代码。

所以目标这个词可以是各种关键字,例如all, install, clean, etc

这是一种表达做某事的方式。make all 意味着做所有事情