目标嵌入在包含的Makefile中时找不到目标命令

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

我试图在Makefile上运行GNU Make,说Makefile1包含另一个Makefile2。以下是Makefile1的外观

include absolute_path to Makefile2


target_from_Makefile2: Dependencies
              run_target_from_Makefile2

这是Makefile2的样子

run_target_from_Makefile2: Dependencies
     run_xyz

这是我看到的错误

make: run_target_from_Makefile2: Command not found
Makefile1:5: recipe for target 'run_target_from_Makefile2' failed
make: *** [target_from_Makefile2] Error 127
makefile gnu-make
2个回答
0
投票

makefile的格式是

targetFile: dependency1 dependency2 ...
        run_command_to_build_targetFile

dependency1:
        run_command_to_build_dependency1

dependency2:
        run_command_to_build_dependency2

将makefile 1更改为:

include absolute_path to Makefile2


target_from_Makefile2: Dependencies run_target_from_Makefile2

您应该停止获取错误,但构建过程有点不清楚。如果您需要更多帮助,请发布一些更确定的代码。


2
投票

make recipe是一个shell脚本。调用一个shell,并将配方文本传递给shell运行。 makefile中目标的名称不是shell脚本命令,因此您不能将其用作shell命令来运行。

您可以将其他目标声明为先决条件:

target_from_Makefile2: Dependencies run_target_from_Makefile2

所以makefile2中的目标是先决条件,或者你可以使用递归make,就像这样(但在这种情况下,包含makefile2没有意义):

target_from_Makefile2: Dependencies
          $(MAKE) -f path_to_makefile2 run_target_from_Makefile2
© www.soinside.com 2019 - 2024. All rights reserved.