【问题标题】:gmake include target file based on build targetgmake 包含基于构建目标的目标文件
【发布时间】:2014-05-12 11:47:32
【问题描述】:

我有一个 Makefile,然后是 target.mk 子文件夹中的文件。

我想根据命令行构建目标构建其中一个子目标文件。

'制作插件'

如果我在 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)

谢谢。

【问题讨论】:

  • subfolder/targets.mk 的规则在哪里?
  • 什么意思?我添加了targets.mk的内容
  • 你想让你的makefile构建subfolder/targets.mk吗?
  • 是的,但我需要保留一个单独的 Make 文件和子文件夹/targets.mk 文件
  • 那么你的makefile必须有一个规则来构建subfolder/targets.mk。我可以假设你的 makefile 中存在这样的规则吗?

标签: makefile gnu-make target


【解决方案1】:

以下 Makefile 将根据命令 make plugin 构建子文件夹:

all: libraries binaries
plugin:
    $(MAKE) -C subfolder -f targets.mk
libraries binaries:
    echo building $@

我没有关注库和二进制目标。但是,它仍然默认设置为 all 目标。由于第一个目标是默认目标,如果指定什么都不做,则需要放置一个什么都不做的目标作为第一个目标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    相关资源
    最近更新 更多