makefile基本格式:
target:...properties:
command1
例如:
%.o:%.c
gcc %.c %.h
target:
gcc -o target %.o
注意:command前有tab制表符。
也可以省略生成.o的过程:
target:%.c
gcc -o target %.c
生成.o的好处:
makefile在执行的时候,如果.c文件或者.h有改动,则会生成相应的.o,其他未改动的文件不会生成新的.o文件。
如果makefile中省略了.o文件生成,则无论.c文件是否有改动都会编译,大大加长了编译时间。
参考如下:
INC_DIR:=./include
SRC_DIR:=./src
SOURCE:=$(wildcard src/*.c) #wildcard:匹配函数
OBJECT:=$(patsubst %.c,%.o,$(SOURCE)) #padsusst函数:替换函数
LIBS:=-lpthread
CXX:= gcc
CXXFLAGS:=-w -g $(addprefix -I,$(INC_DIR)) $(LIBS) #addprefix函数,给目标添加前缀,格式:addprefix 前缀,目标。
EXE:=./main
$(warning $(CXX) -o $(EXE) $(SOURCE) $(CXXFLAGS))
$(OBJECT):$(SOURCE)
$(CXX) $(SOURCE) $(addprefix -I,$(INC_DIR))
$(EXE):$(OBJECT)
$(CXX) -o $(EXE) $(OBJECT) $(CXXFLAGS)
clean:
rm main $(OBJECT)
C/C++通过编译、链接生成可执行文件。
编译:将.c文件生成.o文件
链接:将.o文件与其他库文件等生成可执行文件。