如何从不同的 makefile 调用目标?

How to call a target from a different makefile?

我无法从不同的 makefile 执行目标。这是我正在做的

${MAKE} target -f makefile-location 

最终发生的事情是它试图执行整个 makefile 而不是导致它失败的特定目标。我只需要它运行那个特定的目标。

更新:

现在我认为它只是在目标之前执行宏。它在包含行失败,但我不确定它是否应该在我调用特定目标时执行。

### MAKEFILE BEGINS###

.SILENT 

PROJCONFIG := ${PROJ_CFG}

PATH := directory 

include ${PATH}/config.cfg

您是否认为 Make 从给定目标开始通过 Makefile 工作?如果是这样,您将对正在发生的事情有一个错误的模型。

Make 的工作方式是 (1) 它解析 整个 Makefile,包括 include 指示的任何内容,然后 (2) 确定它是哪个目标满足(在命令行上给出,或者将遇到的第一个目标作为默认值),然后 (3) 确定它必须执行什么操作才能满足该目标。

Makefile 中目标的顺序是任意的,遇到的第一个目标是唯一的例外,如果在命令行中没有给出目标,则将其用作默认值。

也就是说,Makefile 中没有自上而下的逻辑,如果您将其视为“普通”编程语言,您可能会想到这一点。

因此,在回答您的(隐含的)问题时,如果它在 include 上失败,那么无论它试图满足什么目标,它都会这样做。如果它在那里失败,那么 .cfg 文件中的 (Makefile) 语法有问题。