我是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);对于这种情况?
答案 0 :(得分:1)
请针对截然不同的问题创建不同的SO请求。
对于您的第一个问题,这相当于此功能:
$(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.o,$(SOURCES))
基本上说“查看$(SOURCES)
变量的值,并且对于匹配模式$(SRCDIR)/%.cpp
的每个单词,将其替换为模式$(OBJDIR)/%.o
。所以,如果{{1} }包含将被SOURCES
替换的单词./external/src/foo/bar/biz.cpp
。