【发布时间】:2014-08-29 16:31:18
【问题描述】:
我正在创建 Makefile,它给了我以下错误
Makefile:124: *** unterminated call to function `foreach': missing `)'. Stop.
第 124 行的 Makefile 是
.PHONY: popiso
popiso: isolinux_cfg $(foreach x,$(_$(country)_pops_roles), pop_iso_$(x)) $(isomedia)
@echo $@
@echo
@echo allhostname $(allhostname)
@echo
@echo
@echo allnetwork_setup $(allnetwork_setup)
@sudo cp $(addsuffix .ks.cfg,$(allhostname)) $(isomedia)
@sudo cp isolinux.cfg $(isomedia)/isolinux/
@echo ready to make iso
$(_$(country)_pops_roles) 得到正确扩展,它调用 pop_iso_XXXX 4 次,因为它假设。 然后它给出了上述错误。
我正在使用 RHEL6 - 64 位机器 我对 Makefile/Gmake 没有那么深入,所以我不确定是什么问题。
$ make -v
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for x86_64-redhat-linux-gnu
和满树
编辑:重制版本:使用'remake all -X'运行
主线是这样展开的
popiso: isolinux_cfg pop_iso_loc2_role1 pop_iso_loc2_role2 pop_iso_loc1_role1 pop_iso_loc1_role2 /raw/ops-xxxx/media
前5个目标成功,然后停止如下
end pop_iso_loc1_role2
/raw/patel/xxxx-build-test/build-tools/ks/Makefile:166 Successfully remade target file `pop_iso_loc1_role2'.
<- (/raw/patel/xxxx-build-test/build-tools/ks/Makefile:166)
pop_iso_loc1_role2
remake<19>
-> (/raw/patel/xxxx-build-test/build-tools/ks/Makefile:119)
/raw/ops-xxxx/media:
remake<20>
/raw/patel/xxxx-build-test/build-tools/ks/Makefile:124 Must remake target `popiso'.
Makefile:125: *** unterminated call to function `foreach': missing `)'. Stop.
***Entering debugger because we encountered a fatal error.
** Exiting the debugger will exit make with exit code 2.
popiso
remake<21>
然后出于测试目的,我删除了第六个目标“/raw/ops-xxxx/media”,但错误仍然相同
【问题讨论】:
-
您确定这是导致该错误消息的行吗?
-
使用remake - 及其
-x标志- 来调试此类错误。 -
错误信息显示第 124 行,即 foreach 命令之后的行。行 foreach 是第 123 行。我会检查重拍。
-
所以
isomedia又名/raw/ops-xxxx/media依赖于popiso(循环依赖?)并最终再次调用配方,其中一些变量未设置和/或拙劣?不确定这是不是解释,但这就是我对可用信息所做的。 -
$(isomedia): $(noop $$(pmkdir $$@)) @echo end $$@似乎没有循环依赖。它只是创建目标目录。