Makefile:124:***未终止调用函数`foreach':缺少')'。停止
我创建的Makefile,它给了我下面的错误Makefile:124:***未终止调用函数`foreach':缺少')'。停止
Makefile:124: *** unterminated call to function `foreach': missing `)'. Stop.
Makefile的左右线124
.PHONY: popiso
popiso: isolinux_cfg $(foreach x,$(_$(country)_pops_roles), pop_iso_$(x)) $(isomedia)
@echo [email protected]
@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
$(_ $(国家)_pops_roles)得到正确的扩大,它调用pop_iso_XXXX 4它假定的时间。 然后它给出了上述错误。我正在使用RHEL6 - 64位机 我对Makefile/
$ 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
Hemanshu
编辑:翻拍版:使用运行 '重拍所有-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',但是错误仍然表示相同
你说“它调用pop_iso_XXXX 4次,因为它假设”。
这证明问题不在此foreach()中。如果是的话,我希望这个foreach不会被扩展。
下面简单,独立的Makefile,正常工作并给没有错误的预计业绩:
_a_pops_roles=foo bar
country=a
popiso: $(foreach x, $(_$(country)_pops_roles), pop_iso_$(x))
pop_iso_foo:
echo 1
pop_iso_bar:
echo 2
这种用法是相同的,你有什么。
在Makefile中寻找其他foreach循环,问题实际上在哪里。
例如:您在同一行上有另一个电话$(isomedia)。如果这个宏扩展到foreach,并且它有一个语法错误,那么即使这个错字是其他地方,这个错误也会被报告为这条错误。
你不能总是信任行号。
谢谢你的回答。 $(isomedia)只是创建目标目录,如果它不存在。我已经完全调试了脚本,它没有报告任何错误,这是一个问题。没有任何错误,我没有任何东西,但行号去。 – Hemanshu 2014-09-02 12:30:16
pop_iso_foo/bar也是假的,它们被定义为定义为popiso_pop_role .PHONY:pop_iso _ $(1)_ $(2) pop_iso _ $(1)_ $(2):isolinux.cfg.head rpms.m4 ks_network .cfg.m4 @echo Hemanshu – Hemanshu 2014-09-02 12:38:43
您确定这是导致该错误消息的行吗? – 2014-08-29 16:37:30
使用[remake](http://bashdb.sourceforge.net/remake/)及其'-x'标志来调试此类错误。 – 2014-08-29 16:40:08
对于第124行,即foreach命令后面的行,说明错误消息。在线foreach是第123个。我会检查重拍。 – Hemanshu 2014-08-29 16:57:51