Linux/C++項(xiàng)目結(jié)構(gòu)與編譯-創(chuàng)新互聯(lián)

項(xiàng)目結(jié)構(gòu)與說(shuō)明
zcm@vm:~/Documents/makefile/project$ ll
total 40
drwxrwxr-x 9 zcm zcm 4096 11月 29 18:53 ./
drwxrwxr-x 3 zcm zcm 4096 11月 29 16:59 ../
drwxrwxr-x 2 zcm zcm 4096 11月 30 20:34 build/
drwxrwxr-x 2 zcm zcm 4096 11月 29 17:03 doc/
drwxrwxr-x 4 zcm zcm 4096 11月 30 20:31 include/
-rw-rw-r-- 1 zcm zcm  208 11月 30 20:21 Makefile
drwxrwxr-x 2 zcm zcm 4096 11月 29 17:01 res/
drwxrwxr-x 6 zcm zcm 4096 11月 30 20:34 sim_muduo_lib/
drwxrwxr-x 4 zcm zcm 4096 11月 29 19:04 src/
drwxrwxr-x 2 zcm zcm 4096 11月 29 17:02 tools/
zcm@vm:~/Documents/makefile/project$ tree
.
├── build						# build 可運(yùn)行目標(biāo)文件產(chǎn)出目錄
│   ├── EchoClient
│   └── EchoServer
├── doc							# doc 項(xiàng)目記錄或其他文件目錄
├── include						# include 項(xiàng)目頭文件目錄,可分為module1 module2...
│   ├── Client_include
│   │   └── EchoClient.h
│   └── Server_include
│       └── EchoServer.h
├── res							# 資源文件目錄
├── sim_muduo_lib				# 項(xiàng)目依賴庫(kù)目錄
│   ├── lib						# 庫(kù)(靜態(tài)庫(kù))發(fā)布目錄,包括庫(kù)文件與頭文件
│   │   ├── Atomic.h
│   │   ├── Buffer.h
│   │   ├── ConnectSocket.h
│   │   ├── InetAddress.h
│   │   ├── libsim_muduo.a
│   │   ├── LinkOwner.h
│   │   ├── ...
│   │   └── Timestamp.h
│   ├── obj						# 庫(kù)(靜態(tài)庫(kù))產(chǎn)出目錄,產(chǎn)出中間文件
│   │   ├── Buffer
│   │   ├── ConnectSocket.o
│   │   ├── EpollAdpt.o
│   │   ├── InetAddress.o
│   │   ├── libsim_muduo.a
│   │   ├── ListenSocket.o
│   │   └── Logging.o
│   ├── prih					# 頭文件目錄
│   │   ├── Atomic.h
│   │   ├── ConnectSocket.h
│   │   ├── ...
│   │   └── Poller.h
│   ├── pubh					# 頭文件目錄
│   │   ├── Buffer.h
│   │   ├── EventLoop.h
│   │   ├── ...
│   │   └── Timestamp.h
│   ├── Buffer.cpp				# # # # # #
│   ├── ConnectSocket.cpp
│   ├── EpollAdpt.cpp			
│   ├── EventLoop.cpp          # 源文件
│   ├── ListenSocket.cpp
│   ├── Logging.cpp
│   ├── ...						# # # # # #
│   └── makefile			   # 庫(kù) Makefile
├── src						   # 項(xiàng)目源文件目錄,可分為module1 module2...
│   ├── Client_src
│   │   ├── EchoClient.cpp
│   │   ├── EchoClient_main.cpp
│   │   └── Makefile			# module1 Makefile
│   └── Server_src
│       ├── EchoServer.cpp
│       ├── EchoServer_main.cpp
│       └── Makefile		    # module2 Makefile
├── tool					    # 工具文件目錄  
└── Makefile				    # 項(xiàng)目總體Makefile
編譯(Makefile)說(shuō)明 makefile中符號(hào)說(shuō)明
# $@ 表示目標(biāo)文件
# $^ 表示所有的依賴文件
# $< 表示第一個(gè)依賴文件
# $? 表示比目標(biāo)還要新的依賴文件列表
# $(wildcard pubh/*.h prih/*h)   明確表明通配符
# $(patsubst %.cpp,%.o,$(LIB_SRC)) 替換 %.cpp to %.o
# $(addprefix $(OBJ_DIR)/, $(OBJS)) 加前綴
# INC_DIR   = -I$(BASE_DIR)/include/Server_include -I$(BASE_DIR)/sim_muduo_lib/lib    找頭文件的地址 "-I"
# CLIBS     = -L$(LIB_DIR) -lsim_muduo -pthread    找依賴庫(kù)的地址"-L"
項(xiàng)目總體Makefile
# 進(jìn)入目錄,編譯,(產(chǎn)出)
# clean

all: 
	cd sim_muduo_lib && make && make output
	cd src/Server_src && make				
	cd src/Client_src && make

clean:
	cd sim_muduo_lib && make clean
	cd src/Server_src && make clean
	cd src/Client_src && make clean
依賴庫(kù)Makefile
.SUFFIXES: .sh .h .c .cc .cpp

# # # # # # 編譯靜態(tài)庫(kù)命令,編譯產(chǎn)出命令 # # # # # #
AR        = ar
AR_FLAGS  = crs

CXX       = g++
CXXFLAGS  = -std=c++11 -ggdb3 -Wall -DDEBUG 

# # # # # # 準(zhǔn)備地址變量 # # # # # #
# -Ipubh -I the path of *.h
INC_DIR   = -Ipubh -Iprih
OBJ_DIR   = obj
OUT_DIR   = lib

# # # # # # 準(zhǔn)備 *.h *.cpp *.o  *.a 變量 # # # # # #
INCLUDE=$(wildcard pubh/*.h prih/*h)
LIB_SRC=$(wildcard *.cpp)
OBJS=$(patsubst %.cpp,%.o,$(LIB_SRC))  
MUDUOLIB  = $(OBJ_DIR)/libsim_muduo.a

# # # # # #  make  # # # # # #
all: obj_dir objs muduolib
obj_dir objs muduolib: $(OBJ_DIR) $(OBJS) $(MUDUOLIB)
# 鏈接 由*.o ->MUDUOLIB
$(MUDUOLIB):$(addprefix $(OBJ_DIR)/, $(OBJS)) 
	$(AR) $(AR_FLAGS) $@ $^
# 編譯 由*.cpp ->*.o     one by one
$(OBJS):%.o:%.cpp
	$(CXX) -c $(CXXFLAGS) $(INC_DIR) $< -o $(OBJ_DIR)/$@
# 生成OBJ_DIR	
$(OBJ_DIR):
	@-mkdir -p $(OBJ_DIR)
	
# # # # # #  make output  # # # # # #
.PHONY:output
output:
	@-mkdir -p $(OUT_DIR)
	cp $(MUDUOLIB) $(OUT_DIR)
	cp $(INCLUDE) $(OUT_DIR)
	
# # # # # #  make clean  # # # # # #
.PHONY:clean
clean:
	@-rm -rf  $(OBJ_DIR)
	@-rm -rf  $(OUT_DIR)
modules Makefile
.SUFFIXES: .sh .h .c .cc .cpp
# # # # # # 編譯靜態(tài)庫(kù)命令,編譯產(chǎn)出命令 # # # # # #
AR        = ar
AR_FLAGS  = crs

CXX       = g++
CXXFLAGS  = -std=c++11 -ggdb3 -Wall -Werror

# # # # # # 準(zhǔn)備變量 # # # # # #
# base地址
BASE_DIR  = ../..
# 產(chǎn)出地址
BUILD_DIR = $(BASE_DIR)/build
# 頭文件地址
INC_DIR   = -I$(BASE_DIR)/include/Server_include -I$(BASE_DIR)/sim_muduo_lib/lib
# 依賴庫(kù)地址
LIB_DIR   = $(BASE_DIR)/sim_muduo_lib/lib
# 依賴庫(kù)地址與名稱
CLIBS     = -L$(LIB_DIR) -lsim_muduo -pthread 
# 產(chǎn)出
BIN       = $(BUILD_DIR)/EchoServer
# *.cpp
SERVER_SRCS = $(wildcard *.cpp)

# # # # # # make # # # # # #
all:  bin 
bin :$(BIN)

$(BIN):$(SERVER_SRCS)
	$(CXX) $(CXXFLAGS) $(INC_DIR) -o $@ $^ $(CLIBS)

# # # # # # make clean # # # # # #
clean:
	@-rm -rf $(BIN)

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

創(chuàng)新互聯(lián)建站自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元澤州做網(wǎng)站,已為上家服務(wù),為澤州各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108

新聞標(biāo)題:Linux/C++項(xiàng)目結(jié)構(gòu)與編譯-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://www.muchs.cn/article44/cdeohe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)建站App開(kāi)發(fā)、軟件開(kāi)發(fā)電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)