簡體   English   中英

GNU makefile中的“文件過早結束”是什么意思?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM