2017-03-07 103 views
1

@D意味着我必須爲什麼呢在shell腳本

echo -e "\\n" "===== Making: $(@D)\n";\ 
    if [ ! -d $(@D) ]; then \ 
      mkdir $(@D); \ 
    else \ 
      if [ -e $(@D)\PackageBuild.error ]; then \ 
        rm $(@D)\PackageBuild.error;\ 
      fi; \ 

我不知道這是什麼@D是做一個代碼。 有人可以幫我在這裏

回答

3

通常$(command)執行命令並用命令的輸出替換$(command)。 因此,必須有一個名爲@D的文件,該文件是可執行的並位於搜索路徑中。

但是,如果這不是一個shell腳本,但make文件就意味着:

$(@D) 

目標文件名的目錄部分,去掉後 斜線。如果[email protected]的值是dir/foo.o那麼$(@D)dir。如果[email protected]不包含斜線,則此值爲.

+0

謝謝..這對我來說很有意義 – panda

0

bash沒有任何像@D語法的概念。我想你在這裏的特殊環境下,我想再次在Makefilemake是一個特殊的程序,它不會逐字執行Makefile中的腳本。相反,它預處理腳本。

$(x)在調用腳本之前進行評估,並由設置在Makefile中的變量替換。所以我想在Makefile的某處你有一個名爲@D的變量設置爲一個特定的值。 (並且有一個預定義的,如D. Mika發現的;-)

+0

yes糾正這是一個make文件,但我們沒有在make文件的任何位置設置@D的值。 – panda

+0

正如我寫的那樣,D. Mika已經找到了'@ D'的定義,並在他們的答案中引用了文檔。 – Alfe