我的目录中有两个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
请告诉我这里有什么问题
答案 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
,看看是否能解决问题。