当只有一个参数时,$ @和$ 1之间的区别是什么?

时间:2015-06-21 14:46:38

标签: makefile

有一些C代码:

apple.c

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

生成文件

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

$ make apple
它完美无缺。但是如果我将Makefile修改为:

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

$ make apple
这是行不通的。当只有一个参数时,$@$1之间有什么区别?

1 个答案:

答案 0 :(得分:7)

在shell脚本中,没有区别。但这是一个Makefile,所以这些引用是make variables$@name of the rule targetapple此处),而$1是名为1的变量 - 没什么特别的。 Bash没有看到这些变量引用;他们由make处理。

$ cat Makefile 
1 = one

target:
    @echo '@ = $@'
    @echo '1 = $1'

$ make
@ = target
1 = one