使用递归 makefile 时如何管理一个 make 文件到另一个 make 文件的依赖关系?

问题描述 投票:0回答:1

我有一个

src/
目录,其中包含我的程序源代码和用于构建程序的 Makefile。 在根目录下,我想添加一个 Makefile 来打包我的应用程序。

AppCli.zip: src/AppCli
        # make my package

src/AppCli: # I should make it Phony or copy the dependency of AppCli in src/Makefile
        cd src/ && $(MAKE) AppCli

src/AppCli
如何直接从
src/
文件夹中的makefile知道它的依赖关系?

makefile gnu-make
1个回答
0
投票

src/AppCli
如何直接从makefile中知道它的依赖关系
src/
文件夹?

不能。您需要将该信息委托给子品牌,这意味着您的父品牌always 需要调用子品牌。是否重建将由 sub-make 决定。

但是,将

src/AppCli
声明为 PHONY 也不正确,因为这意味着
AppCli.zip
将始终过时,因为它取决于 PHONY 目标。

相反,您想玩个把戏以确保

src/AppCli
已过时,但是 依赖于
src/AppCli
的东西只有在它发生变化时才会过时。你可以用“强制规则”来做到这一点,就像这样:

AppCli.zip: src/AppCli
        # make my package

src/AppCli: FORCE
        cd src/ && $(MAKE) AppCli

.PHONY: FORCE
FORCE: ;

这里我们添加了一个永远过时的force先决条件(很明显,它可以被称为任何你想要的东西),这意味着

src/AppCli
将永远被认为是过时的。但是,依赖
src/AppCli
的东西,只有sub-make修改了才会认为是过时的

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.