首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Makefile:动态分派到其他Makefile

Makefile:动态分派到其他Makefile
EN

Stack Overflow用户
提问于 2016-05-01 02:28:01
回答 2查看 75关注 0票数 0

我有许多子目录,里面有Makefile,我想要一个“主”Makefile,它基本上调用这些目录中的Makefiles:

代码语言:javascript
复制
Makefile
foo/Makefile
bar/Makefile

因此,在根目录中键入make foo等同于cd foo && make。我可以编写简单的Makefile来接受这一点:

代码语言:javascript
复制
foo:
    cd foo && make

bar:
    cd bar && make

但我不想列出这些子目录,所以我可以使用Makefile添加新目录,而不必修改"master“Makefile。

EN

回答 2

Stack Overflow用户

发布于 2016-05-01 03:01:00

我认为make可能不是解决这个特定问题的最佳工具。为什么不是shell脚本呢?

代码语言:javascript
复制
#!/bin/sh
cd $1 && make

如果你真的决定只用make来做这件事,你可以使用这样的makefile:

代码语言:javascript
复制
DIRS=$(patsubst %/,%,$(wildcard */))
.PHONY: $(DIRS)
$(DIRS):
    @cd $@ && $(MAKE)
票数 1
EN

Stack Overflow用户

发布于 2016-05-01 09:22:57

我想你想要的东西是这样的:

代码语言:javascript
复制
subdirs := $(shell find * -name Makefile | sed /\/Makefile$//)

$(subdirs):
    $(MAKE) -C $@

以下是几个简单的要点:

  • 您不应该直接从makefile中调用make。使用makefile instead.
  • $(MAKE) -C dircd dir && make
  • if做同样的事情你的$(MAKE)文件保证会精确到下一级,使用ls */Makefile代替find * -name Makefile。发布的解决方案将在子目录中找到所有makefile,这可能不是您想要的。
  • 您应该注意其中一个子目录名称不会与主makefile中的任何其他目标名称冲突。这需要某种目录命名/目标命名约定。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36958629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档