如何创建一个简单的makefile?

时间:2013-05-01 16:21:15

标签: c makefile

我有三个文件:main.c,foo.c和foo.h.我想知道如何使最简单的makefile成为可能吗?我之前从未制作过makefile,我尝试过的所有内容都只是给了我错误。此外,文件应该是什么类型的扩展?我现在把它保存为makefile.c。

感谢。

我试过这个:

all: main.c foo.c
    gcc main.c foo.c -o main

当我使用make命令时,我收到了大量错误。

3 个答案:

答案 0 :(得分:1)

在这种干净的设置中,如果使用makepp,则根本不需要makefile。只需调用makepp main(不覆盖任何内置规则),就会发送它来查找构建它的来源,例如main.cpp或您的main.c。它将扫描#include语句并在每次包含更改时重建(即重新格式化或注释更改)。

巧妙的是,在链接时,它会将标题视为要在任何匹配模块中链接的提示,在您的foo.o中,它将从foo.c构建。如果foo.c包含bar.h,它会递归地进行,它也会考虑bar.o进行链接。

makepp还有很多。除了做几乎所有GNU make之外,还有更多有用的东西,你甚至可以通过一些Perl编程扩展你的makefile。

答案 1 :(得分:0)

您需要的简单Makefile就像


obj -m := main.o foo.o

并将其保存为Makefile,但没有扩展名,因为make-files不能包含任何扩展名

答案 2 :(得分:0)

我可能会写这样的东西(我不是100%使用所有隐式规则,所以我只是保持简单):

all: main            # all depends on the program (put it first so `make` == `make all`)
main: main.o foo.o   # main depends on its objects
    gcc main.o foo.o -o main    # create the program by linking the object files
foo.o: foo.c foo.h   # the foo object depends on its .c and .h files
                     # the main object implicitly depends on its .c file

确保命令部分使用 TAB 字符缩进,而不是空格。在某些编辑器中(在某些配置中),您必须键入 ctrl + V 然后 TAB

另存为makefile但没有扩展名。