2015-06-21 125 views
0

有一些C代碼:

apple.c

#include<stdio.h> 
int main(void) 
{ 
    printf("apple\n"); 
    return 0; 
} 

的Makefile

apple: 
    gcc -c [email protected] 
    gcc [email protected] -o [email protected] 

$ make apple
和它完美的作品。但是,如果我修改Makefile爲:

apple: 
    gcc -c $1.c 
    gcc $1.o -o $1 

$ make apple
它不工作。只有一個參數時,[email protected]$1之間有什麼區別?

回答

7

在shell腳本中,不會有任何區別。但是這是一個Makefile,所以這些參考文獻是make variables[email protected]name of the rule targetapple這裏),而$1是一個變量名爲1 —沒什麼特別的。 Bash沒有看到這些變量引用;他們由make處理。

$ cat Makefile 
1 = one 

target: 
    @echo '@ = [email protected]' 
    @echo '1 = $1' 

$ make 
@ = target 
1 = one 
相關問題