2014-01-17 150 views
0

我是新來的makefile,最近我一直在尋找一個makefile,無法理解這是什麼意思makefile文件編譯的文件庫

OBJS := $(SRCS:$(SRCDIR)/%.cpp=$(OBJDIR)/%.o) 

where 
PROJECT_ROOT=. 
EXTERNAL_ROOT=$(PROJECT_ROOT)/external 
SRCDIR = $(PROJECT_ROOT)/src 
OBJDIR = $(PROJECT_ROOT)/myobjs 
BINDIR = $(PROJECT_ROOT)/mybins 
DOCDIR = $(PROJECT_ROOT)/doc 

這是什麼代表什麼呢?我還希望靜態庫包含myobjs文件夾中的所有文件或$(OBJS)除main.o以外的文件,其中包含如何編寫命令 ar -cvq mylibs/libCS296test.a $(OBJS);對於這樣的情況?

回答

1

請針對不同的問題創建不同的SO請求。

關於第一個問題,也就是相當於這個功能:

$(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.o,$(SOURCES)) 

基本上說,「看通過$(SOURCES)變量的值,並匹配模式$(SRCDIR)/%.cpp的每一句話,與圖案$(OBJDIR)/%.o更換因此,如果SOURCES包含將被替換爲./external/myobjs/foo/bar/biz.o的文字./external/src/foo/bar/biz.cpp