Makefile编译⽣成多个可执⾏⽂件CC = gcc
CXX = g++
CFLAGS = -O -DDBG -D_REENTRANT -Wall -DUSE_PTHREAD -pthread
LDFLAGS = -ldl -lnsl -lm -lpthread
#wildcard 对 c⽂件进⾏展开
SRCS = $(wildcard *.c) $(wildcard *.cpp)
#去除路径信息
dir=$(notdir $(SRCS))
# 把后缀.c 替换成 .o
OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o,$(dir)) )
//OBJS = main1.o main.o
DATALIBS = dblib/lib.a
ZIPLIBS = ZipCoder/ZipCoder.a
TARGET = main main1
all: $(TARGET)
@echo $(SRCS)
@echo $(dir)
@echo $(OBJS)
main : main.o $(filter-out main1.o main2.o,$(OBJS))
$(CXX) $(CFLAGS) -o $@ $^ $(LDFLAGS)
main1 : main1.o $(filter-out main.o main2.o,$(OBJS))
$(CXX) $(CFLAGS) -o $@ $^ $(LDFLAGS)
%.o : %.c
$(CC) -c $(CFLAGS) $^ -o $@
%.o : %.cpp
$(CXX) -c $(CFLAGS) $^ -o $@
.PHONY : clean
clean :
rm -f *.o
rm -f ../bin/excute
# install:
# mv Excute excute; cp -f ordermisd ../bin/;
Makefile常⽤理解:
参数: makefile⾥⽤${temp}
定义的变量: $(temp)
传递的操作。例如: make clean。其中clean是伪字符. makefile⾥的使⽤:clean:
判断参数跟变量都只⽤名字,
ifdef 不⽤${TARGET} 和 $(TARGET)
ifdef TARGET
HOST = ${TARGET}-
elsemakefile phony
HOST =
endif
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论