我有一个Makefile,然后是子文件夹中的targets.mk文件。
我想基于命令行构建目标构建一个子目标文件。
'make plugin'
如果我在Makefile中尝试这样的东西,它不会在子文件夹中构建target.mk
plugin: BUILD_PLUGIN=Yes
all: libraries binaries
ifeq($(BUILD_PLUGIN),Yes
include subfolder/targets.mk
endif
任何人都知道如何做到这一点?我使用MAKECMDGOALS似乎没有太多运气。
targets.mk的内容是:
PLUGIN_SRCDIR=myplugin
PLUGIN_CPP_SRCS=\
$(PLUGIN_SRCDIR)/coder.cpp\
PLUGIN_OBJS += $(PLUGIN_CPP_SRCS:.cpp=.o)
OBJS += $(PLUGIN_OBJS)
$(PLUGIN_SRCDIR)/%.o: $(PLUGIN_SRCDIR)/%.cpp
$(QUIET_CXX)$(CXX) $(CFLAGS) $(CXXFLAGS) $(INCLUDES) $(PLUGIN_CFLAGS) $(PLUGIN_INCLUDES) -c $(CXX_O) $<
$(LIBPREFIX)myplugin.$(LIBSUFFIX): $(PLUGIN_OBJS)
$(QUIET)rm -f $@
$(QUIET_AR)$(AR) $(AR_OPTS) $+
libraries: $(LIBPREFIX)myplugin.$(LIBSUFFIX)
LIBRARIES += $(LIBPREFIX)myplugin.$(LIBSUFFIX)
感谢。
答案 0 :(得分:0)
以下Makefile将根据命令make plugin
构建子文件夹:
all: libraries binaries
plugin:
$(MAKE) -C subfolder -f targets.mk
libraries binaries:
echo building $@
我没有关注图书馆和二进制文件的目标。但是,它仍默认为所有目标。由于第一个目标是默认目标,因此如果指定什么都不做,则需要放置一个不作为第一个目标的目标。