0

我的目录中有两个 GNUmakefile,如下所示,

GNUmakefile 和 GNUmakefile2

如果我必须让“make”命令处理“GNUmakefile2”而不是“GNUmakefile”,有人可以让我知道我必须使用的命令。

我使用了以下命令,
make -f GNUmakefile2

但在这种情况下,我收到以下错误,

这是 gnustep-make 2.6.1。输入“make print-gnustep-make-help”寻求帮助。

make[1]: * * 没有规则来制作目标`internal-master-tool-all'。停止。*

make: * * [内部全部] 错误 2*

我认为它正在考虑将 GNUmakefile 作为 makefile(当我使用带有 -f 命令的 make 时),所以它正在检查 GNUmakefile 中的规则。

目前我正在做的是将所需文件(我想要执行的命令)重命名为“GNUmakefile”。而且我在执行“make”命令时没有收到任何错误,但我认为这不是正确的解决方案。

请让我知道在这种情况下我需要使用哪个命令。谢谢你的帮助。

在检查了 Beta 的解决方案(即,makefile 正在第二次调用 Make,并且第二个 Make 进程可能正在读取 GNUmakefile)之后,我所做的就是将现有的“GNUmakefile”重命名为“GNUmakefile3”。

所以目前在我的目录中存在以下makefile:-“GNUmakefile2”和“GNUmakefile3”。

然后我执行了以下命令:- $ make -f GNUmakefile2

我收到以下错误,

这是 gnustep-make 2.6.1。输入“make print-gnustep-make-help”寻求帮助。
make[1]: GNUmakefile: 没有这样的文件或目录
make[1]: * 没有规则来制作目标`GNUmakefile'。停止。
make: *
[internal-all] 错误 2

请让我知道这里有什么问题

4

1 回答 1

0

您的 makefile 包含来自 FSF 的两个巨大的 makefile。第二个,library.make,包含这个规则:

ifeq ($(GNUSTEP_MAKE_PARALLEL_BUILDING), no)
# Standard building
...
else
# Parallel building. ...
internal-library-all_:: $(GNUSTEP_OBJ_INSTANCE_DIR) $(OBJ_DIRS_TO_CREATE)
    $(ECHO_NOTHING_RECURSIVE_MAKE)$(MAKE) -f $(MAKEFILE_NAME) ...
endif

第一个,common.make包含这个任务:

# The default name of the makefile to be used in recursive invocations of make
ifeq ($(MAKEFILE_NAME),)
  MAKEFILE_NAME = GNUmakefile
endif

所以尝试使用make -f GNUmakefile2 GNUSTEP_MAKE_PARALLEL_BUILDING=noor make -f GNUmakefile2 MAKEFILE_NAME=GNUmakefile2,看看是否能解决问题。

于 2013-11-11T13:12:35.930 回答