关于makefile如何工作的说明?

Don*_*ild 2 c makefile autotools

我发现一个makefile 这里一边念叨自动工具.

我从来没有使用像这样的makefile,我自己尝试过.
我写的makefile的内容是:

all: HelloWorld

clean:
    rm -f HelloWorld *.o
Run Code Online (Sandbox Code Playgroud)

包含makefile的文件夹只包含一个文件HelloWorld.c.

make以下输出成功运行:

$> make
cc     HelloWorld.c   -o HelloWorld
Run Code Online (Sandbox Code Playgroud)

现在,我想尝试,并在makefile我改名为目标allHelloWorl.这次make失败并出现以下错误:

$> make
make: *** No rule to make target `HelloWorl', needed by `all'.  Stop.
Run Code Online (Sandbox Code Playgroud)

请解释make自动搜索和编译源的这种行为.

我的理解是它通过附加.c并使用默认cc编译器编译来从目标名称创建源名称.

Ram*_*pte 5

你的理解大多是正确的; 这是一个隐含的规则.但是,make实际上使用make的CC变量中的编译器来编译文件.