有时候需要维护一个单目录的C/C++小工程,makefile是一个好的选择。但是,许多工程在添加源代码文件时都需要修改makefile,这很不方便,结合网上查的资料,在这里列举一个makefile模板,可以自动编译目录中的源代码,不需要频繁修改makefile

C的makefile模板

src = $(wildcard *.c)
obj = $(src:.c=.o)

LDFLAGS = 

ds: $(obj)
	$(CC) -std=c99 -g -o $@ $^ $(LDFLAGS)

.PHONY: clean
clean:
	rm -f $(obj) ds

C++的makefile模板

src = $(wildcard *.cpp)
obj = $(src:.c=.o)

LDFLAGS =

ds: $(obj)
	$(CXX) -std=c++14 -o $@ $^ $(LDFLAGS)

.PHONY: clean
clean:
	rm -f $(obj) ds

makefile将目录内的c/cpp文件一一匹配找出,逐个编译成obj目标文件。LDFLAGS定义了 编译过程中需要链接的共享库,-std=c99指定编译用语法标准,clean命令用于清理编译结果文件。

使用时

make
make clean