【问题标题】:Makefile build subdirectories by nameMakefile 按名称构建子目录
【发布时间】:2017-10-17 13:29:12
【问题描述】:

我有一个 golang 整体式存储库,其中包含多个应用程序。我在每个应用程序根目录中都有 Makefile,我必须在应用程序目录中,如 root/app1/ 才能运行 make build。我想在每个服务中摆脱这些相同的 Makefile,并拥有一个顶级 Makefile,我可以使用它来一次构建所有应用程序,每个应用程序都创建单独的可执行文件或只构建特定的应用程序。类似的东西

make build app1 # builds only app1
make build # builds all apps

实现这一点的明显方法是为所有应用程序设置目标并具有构建命令,但想知道是否有更简单的方法来做到这一点,甚至不重复 Makefile 中每个目标的构建命令

【问题讨论】:

  • 在你的makefile中,默认目标的名称是什么?
  • 在我的个人应用中它的“构建”

标签: makefile gnu-make


【解决方案1】:

最简单的方法是将 Makefile 向上移动到 root/ 并在其顶部添加以下行:

APPS := app1 app2 ...
TARGETS := $(addsuffix /build, $(APPS))

all: $(TARGETS)

%/build:
    $(MAKE) -C $* -f ../Makefile build

如果您不想递归地使用 Make,那么我们必须查看您的 makefile 的内部结构,以便了解如何修改它。

【讨论】:

    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2021-08-18
    • 2011-12-23
    • 1970-01-01
    相关资源
    最近更新 更多