用于UNIX上的C的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;
}

最简单的makefile是这样的:

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

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

从那时起,它可能会变得非常复杂,这取决于你需要如何将不同的对象连接在一起。

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

正如paxdiablo之前回答的那样,这是您可以为C文件编写的最简单的Makefile。然而,Makefiles有更广泛的用途。它们使您能够以一种非常有组织的方式自动管理和构建项目。Makefile由一个或多个规则组成,如下所示:
target: dependencies
[tab] system command

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

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

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

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

最新更新