工程管理 -- makefile

编译app

STALIB=../staticlib
DYNAMICLIB=../dynamic
######### 标准Makefile Lv1 ########  
EXTENSION=c
CC=gcc
LIB=libstatic_test.a
SUBDIR=./source
OBJ = obj
DEP = dep
TARGET = app
#CXXFLAGS:编译选项, LDFLAGS:链接选项  
CXXFLAGS +=-I./include \
	-I../staticlib/include\
	-I../dynamic/include
LFLAG=-L../staticlib/libstatic\
	   -L../dynamic/libdynamic
LIBS=-lstatic_test -ldynamic
CFLAGE=-Wall 
#LDFLAGS +=
CXX_SOURCES =$(foreach dir,$(SUBDIR), $(wildcard $(dir)/*$(EXTENSION)))
CXX_OBJECTS=$(patsubst  %.$(EXTENSION), ${OBJ}/%.o, $(notdir $(CXX_SOURCES)))
DEP_FILES  =$(patsubst  %.$(EXTENSION), ${DEP}/%.d, $(notdir $(CXX_SOURCES)))
$(TARGET): $(CXX_OBJECTS)
	make -C $(STALIB)
	make -C $(DYNAMICLIB)
	$(CC) $^  $(CFLAGE) -o $@ $(LFLAG) $(LIBS)
${OBJ}/%.o: ${SUBDIR}/%.$(EXTENSION)
	@mkdir -p $(OBJ)
	$(CC)  -c $(CXXFLAGS)  $<  -o  $@
${DEP}/%.d: ${SUBDIR}/%.$(EXTENSION)
	@mkdir -p $(DEP)
	$(CC) $(CXXFLAGS) -MM $< | sed -e 1's,^,$(OBJ)/,' > $@
-include ${DEP_FILES}
clean:
	rm -rf $(OBJ)
	rm -rf $(DEP)
	rm -rf $(TARGET)
	rm -rf ../dynamic/libdynamic
	rm -rf ../staticlib/libstatic

编译静态库

SHARE=--share
CC=gcc
AR=ar -cr
CO=$(AR)
######### 标准Makefile Lv1 ########  
EXTENSION=c
CC=gcc
LIB=libstatic_test.a
SUBDIR=./source
OBJ = obj
DEP = dep
LIBDIR = libstatic
#CXXFLAGS:编译选项, LDFLAGS:链接选项  
CXXFLAGS += -I ./include
#LDFLAGS +=
CXX_SOURCES =$(foreach dir,$(SUBDIR), $(wildcard $(dir)/*$(EXTENSION)))
CXX_OBJECTS=$(patsubst  %.$(EXTENSION), ${OBJ}/%.o, $(notdir $(CXX_SOURCES)))
DEP_FILES  =$(patsubst  %.$(EXTENSION), ${DEP}/%.d, $(notdir $(CXX_SOURCES)))
$(LIB): $(CXX_OBJECTS)
	@mkdir -p $(LIBDIR)
	$(CO) ./libstatic/$@ $^
${OBJ}/%.o: ${SUBDIR}/%.$(EXTENSION)
	@mkdir -p $(OBJ)
	$(CC)  -c $(CXXFLAGS)  $<  -o  $@
${DEP}/%.d: ${SUBDIR}/%.$(EXTENSION)
	@mkdir -p $(DEP)
	$(CC) $(CXXFLAGS) -MM $< | sed -e 1's,^,$(OBJ)/,' > $@
-include ${DEP_FILES}
clean:
	rm  -rf  $(LIB) 
	rm  -rf  $(OBJ)
	rm  -rf  $(DEP)
	rm  -rf  $(LIBDIR)

编译动态库

SHARE=-fPIC -shared 
CC=gcc
AR=ar -cr
CO=$(AR)
######### 标准Makefile Lv1 ########  
EXTENSION=c
CC=gcc
LIB=libdynamic.so
SUBDIR=./source
OBJ = obj
DEP = dep
LIBDIR = libdynamic
#CXXFLAGS:编译选项, LDFLAGS:链接选项  
CXXFLAGS += -I ./include
#LDFLAGS +=
CXX_SOURCES =$(foreach dir,$(SUBDIR), $(wildcard $(dir)/*$(EXTENSION)))
CXX_OBJECTS=$(patsubst  %.$(EXTENSION), ${OBJ}/%.o, $(notdir $(CXX_SOURCES)))
DEP_FILES  =$(patsubst  %.$(EXTENSION), ${DEP}/%.d, $(notdir $(CXX_SOURCES)))
$(LIB): $(CXX_OBJECTS)
	@mkdir -p $(LIBDIR)
	$(CO) $(LIBDIR)/$@ $^
${OBJ}/%.o: ${SUBDIR}/%.$(EXTENSION)
	@mkdir -p $(OBJ)
	$(CC)  -c $(CXXFLAGS)  $<  -o  $@
${DEP}/%.d: ${SUBDIR}/%.$(EXTENSION)
	@mkdir -p $(DEP)
	$(CC) $(CXXFLAGS) -MM $< | sed -e 1's,^,$(OBJ)/,' > $@
-include ${DEP_FILES}
clean:
	rm  -rf  $(LIB) 
	rm  -rf  $(OBJ)
	rm  -rf  $(DEP)
	rm  -rf  $(LIBDIR)

代码目录结构
在这里插入图片描述
代码地址:
https://github.com/alpha008/linux_socket.git
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/alpha_love/article/details/113915902
今日推荐