手写MAKEFILE

手写MAKEFILE

Process

#PROCESS


# <tools>
CC      = /usr/bin/gcc
LD      = /usr/bin/ld


# <Directory>
LIB_EX=../Fbb/
LIB_IN=./lib/
EXTOBJ=$(LIB_IN)libSVvv.a
INTOBJ=$(LIB_IN)libNVvv.a
EXTOBJS=./if/lib/obj/*.o
INTOBJS=\
		./al/alm/obj/*.o	\
		./ca/cal/obj/*.o	\
		./js/jsp/obj/*.o	


SUBDIRS=$(shell ls -l | grep ^d | awk '{if($$9 != "head" && $$9 != "APL" && $$9 != "MAST" ) print $$9}')



KVvvtem:LIB
	$(CC) $(INTOBJ) $(LIB_EX)*.a -lpthread -o $@


LIB:$(EXTOBJ) $(INTOBJ)

$(EXTOBJ):$(EXTOBJS)
	@echo "__make_EXTOBJS_START__"
	$(CC) -shared  $(EXTOBJS) -o $@
	@echo "__make_EXTOBJS_END__"

$(INTOBJ):$(INTOBJS)
	@echo "__make_INTOBJS_START__"
	$(CC) -shared  $(INTOBJS) -o $@
	@echo "__make_INTOBJS_END_"

$(EXTOBJS):$(SUBDIRS) 
	@echo "_make_END_(out)"	
	@-mkdir $(LIB_IN)	
$(INTOBJS):$(SUBDIRS)
$(SUBDIRS):ECHO 
	-make -C $@

ECHO:
	@echo "_make_START"

.PHONY:clean	
clean:
	@echo "_clean_START"
	@-rm -r $(LIB_IN)
	@for n in $(SUBDIRS);do make -C $$n clean;done
	@echo "_clean_END"

Module

#MODULE




SUBDIRS=$(shell ls -l | grep ^d | awk '{if($$9 != "head") print $$9}')

all:$(SUBDIRS)
	@echo "_make_END"
.PHONY:all	
	
$(SUBDIRS):ECHO 
	-make -C $@

ECHO:
	@echo "_make_START"

.PHONY:clean	
clean:
	@echo "_clean_START"
	@for n in $(SUBDIRS);do make -C $$n clean;done
	@echo "_clean_END"

UNIT

#UNIT

#<direcotory>
APL = "../../APL/head"
MAST = "../../MAST/head"
TIME = "../../MAST/TimesTen/head"
PROCESS_HEAD = "../../head"
MODULE_HEAD = "../head"
OBJDIR = obj
MODULE = src
SRCS = $(wildcard src/*.c)
OBJS = $(patsubst %c,%o, $(SRCS))

#<tools>
CC = /usr/bin/gcc




#<options>
CFLAGS = -Wall -fPIC  
#CFLAGS = -w  

#<compile>
all:$(OBJS)
	@-mkdir obj
	@-mv *.o ./$(OBJDIR)

%.o:%.c 
	@echo "	compile direcotory of `pwd`/$< "
	@$(CC) $(CFLAGS) -c $^  -I$(APL) -I$(MAST) -I$(TIME) -I$(PROCESS_HEAD) -I$(MODULE_HEAD) 
 



clean:
	@-rm -r $(OBJDIR) *.o >/dev/null 2>&1

SHELL

#!/bin/bash

NOW=`pwd`

cd VVV

FILE=`ls`



if [ $1 == 1 ]
then

#create obj

for i in $FILE
do
	if [[ $i != head && $i != APL && $i != MAST ]];then
		echo "enter $i"
		cd $i 
		RETURN=$?
		if [ $RETURN -eq 0 ];then
			echo "current path"
			pwd

			FILE2=`ls`
			for j in $FILE2
			do
				if [[ $j != head && $j != TimesTen ]];then
					echo "	enter $j"
					cd $j
					RETURN2=$?
					if [ $RETURN2 -eq 0 ];then 
						echo "current path"
						pwd
						echo "create unit makefile"
						#mkdir obj
						cp $NOW/make/unit/makefile ./
						cd ..
					fi
				fi
			done
			echo "create module makefile"
			cp $NOW/make/module/makefile ./
			cd ..
		fi
	fi
done
echo "create process makefile" 
cp $NOW/make/process/makefile ./

elif [ $1 == 0 ]
then

#delete obj

for i in $FILE
do
	if [ $i != head ];then
		echo "enter $i"
		cd $i 
		RETURN=$?
		if [ $RETURN -eq 0 ];then
			echo "current path"
			pwd

			FILE2=`ls`
			for j in $FILE2
			do
				if [[ $j != head && $j != TimesTen ]];then
					echo "	enter $j"
					cd $j
					RETURN2=$?
					if [ $RETURN2 -eq 0 ];then 
						echo "current path"
						pwd
						echo "	delete makefile"
						#rm -r obj
                        rm makefile
						cd ..
					fi
				fi
			done
			rm maikefile
			cd ..
		fi
	fi
done
rm makefile
fi

TREE

tree
.
|-- Fbb
|   |-- libNFbb.a
|   `-- libSFbb.a
|-- VVV
|   |-- APL
|   |   `-- head
|   |       |-- Aaa.h
|   |       `-- Vvvlib.h
|   |-- KVvvtem
|   |-- MAST
|   |   |-- TimesTen
|   |   |   `-- head
|   |   |       |-- sql.h
|   |   `-- head
|   |       |-- Alm_event.h
|   |       |-- Almlib.h
|   |       |-- Caplib.h
|   |       |-- DbgCom.h
|   |       |-- DbgIpc.h
|   |       `-- plgld.h
|   |-- al
|   |   |-- alm
|   |   |   |-- makefile
|   |   |   |-- obj
|   |   |   |   |-- NVvvalF_CcMsgCallFuncErr.o
|   |   |   |   |-- NVvvalF_MsgAnalyzeInf.o
|   |   |   |   |-- NVvvalF_MsgProvisioningErr.o
|   |   |   |   `-- NVvvalF_PrcMsgCallFuncErr.o
|   |   |   `-- src
|   |   |       |-- NVvvalF_CcMsgCallFuncErr.c
|   |   |       |-- NVvvalF_MsgAnalyzeInf.c
|   |   |       |-- NVvvalF_MsgProvisioningErr.c
|   |   |       `-- NVvvalF_PrcMsgCallFuncErr.c
|   |   |-- head
|   |   |   `-- Vvvalalm.h
|   |   `-- makefile
|   |-- ca
|   |   |-- cal
|   |   |   |-- makefile
|   |   |   |-- obj
|   |   |   |   |-- NVvvcaF_ThreadStart.o
|   |   |   |   `-- NVvvcacalF_ThreadMain.o
|   |   |   `-- src
|   |   |       |-- NVvvcaF_ThreadStart.c
|   |   |       `-- NVvvcacalF_ThreadMain.c
|   |   |-- head
|   |   |   `-- Vvvcacal.h
|   |   `-- makefile
|   |-- head
|   |   |-- Vvval.h
|   |   |-- Vvvca.h
|   |   |-- Vvvjs.h
|   |   `-- cJSON.h
|   |-- js
|   |   |-- head
|   |   |   `-- Vvvjsjsp.h
|   |   |-- jsp
|   |   |   |-- makefile
|   |   |   |-- obj
|   |   |   |   |-- NVvvjsF_ApnToJsonObj.o
|   |   |   |   |-- NVvvjsF_CamelProfileToJsonObj.o
|   |   |   |   |-- NVvvjsF_DataChk_HLRTemplate.o
|   |   |   |   |-- NVvvjsF_DataChk_Subscriber.o
|   |   |   |   |-- NVvvjsF_DataChk_UpdateSubscriber.o
|   |   |   |   |-- NVvvjsF_DuplChk.o
|   |   |   |   |-- NVvvjsF_DuplChk_HLRTemplate.o
|   |   |   |   |-- NVvvjsF_ErrDetailToJsonObj.o
|   |   |   |   |-- NVvvjsF_Free.o
|   |   |   |   |-- NVvvjsF_HLRTemplateToJsonObj.o
|   |   |   |   |-- NVvvjsF_ImsServiceToJsonObj.o
|   |   |   |   |-- NVvvjsF_Parse.o
|   |   |   |   |-- NVvvjsF_Print.o
|   |   |   |   `-- NVvvjsjspF_IPv6StrToNum.o
|   |   |   `-- src
|   |   |       |-- NVvvjsF_ApnToJsonObj.c
|   |   |       |-- NVvvjsF_CamelProfileToJsonObj.c
|   |   |       |-- NVvvjsF_DataChk_HLRTemplate.c
|   |   |       |-- NVvvjsF_DataChk_Subscriber.c
|   |   |       |-- NVvvjsF_DataChk_UpdateSubscriber.c
|   |   |       |-- NVvvjsF_DuplChk.c
|   |   |       |-- NVvvjsF_DuplChk_HLRTemplate.c
|   |   |       |-- NVvvjsF_ErrDetailToJsonObj.c
|   |   |       |-- NVvvjsF_Free.c
|   |   |       |-- NVvvjsF_HLRTemplateToJsonObj.c
|   |   |       |-- NVvvjsF_ImsServiceToJsonObj.c
|   |   |       |-- NVvvjsF_Parse.c
|   |   |       |-- NVvvjsF_Print.c
|   |   |       `-- NVvvjsjspF_IPv6StrToNum.c
|   |   `-- makefile
|   |-- lib
|   |   |-- libNVvv.a
|   |   `-- libSVvv.a
|   |-- makefile
|-- make
|   |-- module
|   |   `-- makefile
|   |-- process
|   |   `-- makefile
|   `-- unit
|       `-- makefile
`-- objfile.sh

猜你喜欢

转载自blog.csdn.net/watershed1993/article/details/129892523
今日推荐