为GNU make命令指定不同的GNUmakefile

时间:2013-11-10 04:23:54

标签: makefile gnu gnu-make

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

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:* * [internal-all]错误2 *

我认为它将GNUmakefile视为makefile(当我使用make with -f命令时),因此它正在检查GNUmakefile中的规则。

目前我正在做的是我将所需的文件(我想要的,make命令执行)重命名为“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

请告诉我这里有什么问题

1 个答案:

答案 0 :(得分: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=no make -f GNUmakefile2 MAKEFILE_NAME=GNUmakefile2 ,看看是否能解决问题。