我有三个文件:main.c、foo.c 和 foo.h。我想知道如何为此制作最简单的makefile?我以前从未制作过makefile,我尝试过的一切都只是给我错误。另外,文件应该是什么样的扩展名?我现在把它保存为makefile.c。
谢谢。
我试过这个:
all: main.c foo.c
gcc main.c foo.c -o main
当我使用 make 命令时,我得到了大量的错误。
在如此干净的设置中,您根本不需要 makefile - 如果您使用makepp。只需调用makepp main
(不覆盖任何内置规则)将发送它寻找构建它的源,例如main.cpp
或在您的情况下main.c
。#include
每次包含显着更改(即不仅仅是重新格式化或注释更改)时,它都会扫描它以查找语句并重建。
巧妙的是,在链接时它会将标头视为链接任何匹配模块的提示,在您的情况下foo.o
,它将从foo.c
. 这可以递归地工作,例如,如果foo.c
包含bar.h
,它也会考虑bar.o
链接。
makepp 还有很多。除了做 GNU make 能做的几乎所有事情,还有很多有用的东西,你甚至可以用一些 Perl 编程来扩展你的 makefile。
我可能会写这样的东西(我不是 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
没有扩展名。
满足您需要的简单 Makefile 就像
obj -m := main.o foo.o
并将其另存为Makefile
没有扩展名,因为make-files不能有任何扩展名