[英]What does “premature end of file” mean in GNU makefile?
我正在嘗試練習makefile中的if語句,但它總是說文件過早結束。 碼:
test_rule:
if [ yes ]
echo "if works"
endif
輸出:
make test_rule
/bin/sh: -c: line 1: syntax error : premature end of file
make: *** [Makefile:13: test_rule] Error 1
我嘗試在線使用很多代碼(例如用[]替換[]或在echo前面添加@),但沒有任何效果。
如手冊所述 ,您需要使用標簽(默認情況下):
請注意:您需要在每個配方行的開頭添加一個制表符! 這是一個模糊的地方,引起了人們的注意。 如果您希望在食譜中使用制表符以外的其他字符作為前綴,則可以將
.RECIPEPREFIX
變量設置為替代字符(請參見特殊變量)。
因此,您需要編寫:
foo:
gcc
換句話說,就是字符串foo:\\n\\tgcc\\n
。
請注意,渲染Markdown時,StackOverflow將選項卡轉換為4個空格(但是,如果您嘗試編輯此答案,則會看到選項卡字符)。
其他答案/評論表明您的“標簽”不正確-可能是正確的-但請查看錯誤消息...
make test_rule
/bin/sh: -c: line 1: syntax error : premature end of file
make: *** [Makefile:13: test_rule] Error 1
我認為這只是命令中不正確的Shell語法的一種情況。 請記住,通常來說,make配方的command部分中的每一行都將在其自己的shell中運行。 嘗試以下操作(請記住,我不是shell專家)...
test_rule:
if [ yes ]; then \
echo "it works"; \
fi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.