我有三个文件:main.c,foo.c和foo.h.我想知道如何使最简单的makefile成为可能吗?我之前从未制作过makefile,我尝试过的所有内容都只是给了我错误。此外,文件应该是什么类型的扩展?我现在把它保存为makefile.c。
感谢。
我试过这个:
all: main.c foo.c
gcc main.c foo.c -o main
当我使用make命令时,我收到了大量错误。
答案 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
但没有扩展名。