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

时间:2018-03-02 23:39:28

标签: makefile gnu-make

我正在尝试在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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

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

相关问题