今天终于学会了编写makefile,使之可以编译目录下所有c\cpp文件。
编译多个c文件一般有两个功能,一个是每个c文件都有main函数,就是说每个c文件的可执行文件是独立的,各自是各自的;第二个是多个c文件用来编译成一个可执行文件。
首先说第一个,内容如下,这个makefile是为了编译opencv代码的。
CFLAGS= -g -O3 `pkg-config opencv --cflags`
LIBS = `pkg-config opencv --libs`
C_SRC = $(wildcard *.c)
C_OBJ = $(patsubst %c, %o, $(C_SRC))
CPP_SRC = $(wildcard *.cpp)
CPP_OBJ = $(patsubst %cpp, %o, $(CPP_SRC))
.PHONY:all clean
all:$(CPP_OBJ) $(C_OBJ)
.c.o:
gcc $(CFLAGS) -o $@ $< $(LIBS)
.cpp.o:
g++ $(CFLAGS) -o $@ $< $(LIBS)
clean:
rm *~ *.o -f
cflags 和 libs就不说了,
c_src和c_obj中,$(wildcard *.c, *.cpp, /***/***/*.c)是为了找出目录和指定目录下所有的后缀为c和cpp的文件,这个功能也可以