UNIX上的C的makefile

时间:2014-09-08 10:15:34

标签: c unix makefile

你好我开始学习C和Unix编程。但是我对makefile感到很困惑。我创建了一个简单的c程序,用printf(aloha.c)显示文本行。我该如何创建一个makefile?它是同一目录或文本文件中的单独.c文件吗?

/*Will output aloha!*/
#include <stdio.h>
int main(void)
{
   printf("Aloha!\n");
   printf("Hello World!\n");
   return 0;
}

2 个答案:

答案 0 :(得分:4)

最简单的makefile就像:

aloha: aloha.c Makefile
    gcc -o aloha aloha.c

(记住第二行的开头是制表符)。它通常在与源相同的目录中命名为Makefile,因此您只需在命令行中输入make

从那里开始,它会变得非常复杂,具体取决于你需要将不同的物体绑在一起。

你会注意到我已经将Makefile本身包含在依赖项列表中 - 因此对makefile的任何更改都会重做所有内容,因为所有的赌注都是关于什么必须是重新编译,重新链接等等。

答案 1 :(得分:1)

正如paxdiablo先前回答的那样,这是您可以为C文件编写的最简单的Makefile。但是,Makefile具有更广泛的用途。它们使您能够以非常有条理的方式自动管理和构建项目。 Makefile包含一个或多个如下所示的规则:

target: dependencies
[tab] system command

但是,您也可以添加一些变量来简化您的makefile。有两种类型的变量:递归扩展和简单扩展变量。实际上,变量可以表示目录,文件名列表,传递给编译器的选项,运行程序......

N.B:makefile中的变量区分大小写,这意味着CC和cc(例如)被认为是不同的!

另一方面,为了创建一个makefile,创建一个文本文件,编写你的内容并将文件名改为Makefile。

注意:当使用“make”时,它直接执行标题为“Makefile”的文件,如果你要在目录中有另一个Makefile,你应该添加要在前面执行的文件的名称make命令。