2014-05-12 66 views
0

我有一個Makefile,然後在子文件夾中的targets.mk文件。gmake包括基於構建目標的目標文件

我想根據命令行構建目標構建一個子目標文件。

「使插件」

如果我嘗試在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 [email protected] 
    $(QUIET_AR)$(AR) $(AR_OPTS) $+ 

libraries: $(LIBPREFIX)myplugin.$(LIBSUFFIX) 
LIBRARIES += $(LIBPREFIX)myplugin.$(LIBSUFFIX) 

感謝。

+0

「子文件夾/ targets.mk」的規則在哪裏? – Beta

+0

你是什麼意思?我添加了targets.mk的內容 – mrmannione

+0

你想讓你的makefile生成'subfolder/targets.mk'嗎? – Beta

回答

0

下的Makefile將在命令make plugin建立子文件夾:

all: libraries binaries 
plugin: 
    $(MAKE) -C subfolder -f targets.mk 
libraries binaries: 
    echo building [email protected] 

我還沒有關注到庫和二進制文件的目標。但是它仍然會按默認設置全部目標。由於第一個目標是默認目標,因此如果不指定任何內容,則無需執行任何操作。