makefile中$(1)和$$(1)
时间: 2024-01-01 17:03:44 浏览: 37
在makefile中,$(1)和$$(1)都是变量展开的语法。
$(1)表示展开变量1的值,类似于$(变量名)的用法。这里的1可以是任何变量名。
$$(1)表示展开变量1的值,并将其当作一个shell命令来执行。这里的1同样可以是任何变量名。
需要注意的是,在makefile中使用$符号时需要转义,所以$$(1)实际上是在shell中执行$(1)。
相关问题
makefile中$
在Makefile中,$符号有特殊的含义。它用于引用变量的值,执行命令或者进行命令替换。
1. 变量引用:$符号后面跟上变量名,表示引用该变量的值。例如,$CC表示引用变量CC的值。
2. 命令执行:$()或者${}可以用于执行命令并获取其输出结果。例如,$(date)表示执行date命令并获取其输出结果。
3. 命令替换:$()或者${}也可以用于将命令的输出结果替换到Makefile中。例如,OBJS=$(wildcard *.c)表示将所有以.c结尾的文件名赋值给变量OBJS。
需要注意的是,在Makefile中使用$符号时,为了避免与Shell中的变量冲突,可以使用$$来表示一个$符号。例如,要在命令中输出一个$符号,可以使用$$来转义。
希望能够解答你的问题,请问还有其他问题吗?
makefile 中的$1
在 Makefile 中,$1 表示第一个参数。它通常在定义一个模板规则时使用,以便将模板规则应用于不同的目标。例如:
```
define template_rule
$(1): $(1).c
gcc -o $(1) $(1).c
endef
$(foreach target,program1 program2 program3,$(eval $(call template_rule,$(target))))
```
在上面的例子中,我们定义了一个名为 template_rule 的函数,它接受一个参数 $(1),表示要编译的目标名称。然后我们使用 foreach 循环遍历三个目标 program1、program2 和 program3,并通过 eval 函数将模板规则应用于每个目标。这样,我们就可以通过一个模板规则来轻松地编译多个目标。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)