Makefile

main.c

mymath.c

mymath.h

下面是这个小项目的makefile

CC=gcc
CFLAGS=-I.
DEPS = mymath.h
OBJ = main.o
LIBS=-L. -lmymath

libmymath.a: mymath.o
    ar rcs $@ $^

%.o: %.c $(DEPS)
    $(CC) -c -o $@ $< $(CFLAGS)

main: libmymath.a $(OBJ)
    $(CC) -o $@ $(OBJ) $(LIBS)

.PHONY: clean

clean:
    rm -f *.o main libmymath.a

这个 Makefile 用于自动化构建一个由两个源文件 main.cmymath.c 组成的 C 程序。mymath.c 文件被编译成一个静态库 libmymath.a,然后与 main.o 链接,创建最终的可执行文件 main

以下是 Makefile 的详细解释:

要进行编译,以ubuntu为例,首先通过sudo apt install build-essential安装make工具,然后下载上面的例程文件之后在项目目录输入make就会构建生成可执行文件了。

对于如此简单的项目自然不值得我们单独编写makefile,但是当项目的规模变大、不同模块之间的依赖越来越复杂,makefile是非常有必要的。