Makefile 프로젝트 파일
###############################################################
# File Name : Makefile
# Author : skytrails
# Email : [email protected]
# Create Time : 2015-09-20 17:51
################################################################
#
_MK_DEBUG = 0
ifeq ($(_MK_DEBUG), 1)
CC := @g++
MKDIR := @mkdir
else
CC := g++
MKDIR := mkdir
endif
RM = rm -f
BIN = $(shell pwd)/bin
UTIL_LIB = $(BIN)/libUtil.so
PUB_LIB = $(BIN)/libPubClass.so
BUS_LIB = $(BIN)/libBusiness.so
TARGET=$(BIN)/startapp.1.0
CFLAGS = -O2
export OBJSDIR=$(shell pwd)/objs
#----------------------------test
TEST_DIRS = src/test
TEST_FILES = $(foreach dir, $(TEST_DIRS), $(wildcard $(dir)/*.cpp))
TEST_OBJS = $(patsubst src%, objs%, $(patsubst %.cpp, %.o, $(TEST_FILES)))
#----------------------------util
UTILDIRS = src/util/deamon
PUBFILES = $(foreach dir, $(UTILDIRS), $(wildcard $(dir)/*.cpp $(dir)/*.c))
UTIL_DEP = $(patsubst src%, objs%, $(patsubst %.cpp, %.d, $(patsubst %.c, %.cpp, $(PUBFILES))))
UTIL_DDIRS = $(patsubst src%, objs%, $(UTILDIRS))
PUBOBJS = $(patsubst %.d, %.o, $(UTIL_DEP))
#---------------------------util end
#---------------------------pubclass
PUB_DIRS = src/pubclass\
src/pubclass/log
PUB_FILES = $(foreach dir, $(PUB_DIRS), $(wildcard $(dir)/*.cpp))
PUB_OBJS_DIRS = $(patsubst src%, objs%, $(PUB_FILES))
PUB_OBJS = $(patsubst src%, objs%, $(patsubst %.cpp, %.o, $(PUB_FILES)))
PUB_DEP = $(patsubst %.o, %.d, $(PUB_OBJS))
#---------------------------pubclass end
#---------------------------business begin
BUS_DIRS = src/business
BUS_FILES = $(foreach dir, $(BUS_DIRS), $(wildcard $(dir)/*.cpp))
BUS_OBJS_DIRS = $(patsubst src%, objs%, $(BUS_DIRS))
BUS_OBJS = $(patsubst src%, objs%, $(patsubst %.cpp, %.o, $(BUS_FILES)))
BUS_DEP = $(patsubst %.o, %.d, $(BUS_OBJS))
#---------------------------business end
all:$(UTIL_DEP) $(PUB_DEP) $(BUS_DEP) $(UTIL_LIB) $(PUB_LIB) $(BUS_LIB) $(TARGET)
@ln -sf $(TARGET) $(BIN)/exp
@ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++
$(PUB_DEP):objs/%.d:src/%.cpp
$(MKDIR) -p $(dir $@)
$(CC) -MM $< |\
sed "$ s+$(patsubst %.d,%.o, $(notdir $@))+$(patsubst %.d,%.o,$@)+g" |\
sed '$$ a\\tg++ -fPIC -shared -c -o $(patsubst %.d, %.o, $@) $<' > $@
$(UTIL_DEP):objs/%.d:src/%.cpp
$(MKDIR) -p $(dir $@)
$(CC) -MM $< |\
sed "$ s+$(patsubst %.d,%.o, $(notdir $@))+$(patsubst %.d,%.o,$@)+g" |\
sed '$$ a\\tg++ -fPIC -shared -c -o $(patsubst %.d, %.o, $@) $<' > $@
$(BUS_DEP):objs/%.d:src/%.cpp
$(MKDIR) -p $(dir $@)
$(CC) -MM $< |\
sed "$ s+$(patsubst %.d,%.o, $(notdir $@))+$(patsubst %.d,%.o,$@)+g" |\
sed '$$ a\\tg++ -fPIC -shared -c -o $(patsubst %.d, %.o, $@) $<' > $@
#-----
$(UTIL_LIB):$(PUBOBJS)
$(CC) -shared -fPIC $< -o $@ $(CFLAGS)
$(PUB_LIB):$(PUB_OBJS)
$(CC) -shared -fPIC $^ -o $@ $(CFLAGS)
$(BUS_LIB):$(BUS_OBJS)
$(CC) -shared -fPIC $^ -o $@ $(CFLAGS) -L$(BIN) -lPubClass
$(TARGET):src/startApp.cpp
#$(CC) -rdynamic $< -o $@ -ldl -L$(BIN) -lPubClass
$(CC) $< -o $@ -L$(BIN) -ldl
-include $(UTIL_DEP)
-include $(PUB_DEP)
-include $(BUS_DEP)
.PHONY : clean touch
test:$(TEST_FILES)
$(MKDIR) -p $(BIN)/test
$(CC) $^ -o $(BIN)/test/$@
clean:
find objs/ -type f | xargs rm -f;
find bin/ -type f | xargs rm -f;
touch:
엔지니어링 디렉토리 트리는 다음과 같습니다.
.├── bin│ ├── exp ->/home/skytrails/back_trunk/bin/startapp.1.0│ └── startapp.1.0├── Makefile├── objs│ ├── business│ │ ├── exp.d│ │ └── exp.o│ ├── pubclass│ │ ├── Debug│ │ ├── excApp.d│ │ ├── excApp.o│ │ ├── log│ │ │ ├── Debug.d│ │ │ ├── Debug.o│ │ │ ├── Trace.d│ │ │ └── Trace.o│ │ ├── process.d│ │ └── process.o│ └── util│ └── deamon│ ├── deamon.d│ └── deamon.o├── shell│ ├── home│ └── vimplugin│ ├── nerdtree.zip│ └── omnicppcomplete-0.41.zip├── src│ ├── business│ │ ├── exp.cpp│ │ └── exp.h│ ├── pubclass│ │ ├── excApp.cpp│ │ ├── excApp.h│ │ ├── log│ │ ├── process.cpp│ │ └── process.h│ ├── startApp.cpp│ ├── test│ │ └── test.cpp│ ├── third-part│ └── util│ ├── deamon│ │ ├── deamon.cpp│ │ └── deamon.h│ └── types.h└── tags
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.