简述:Makefile 变量的定义和使用方法?Makefile模式规则中“%”的作用?Makefile 自动化"$@变量$<和$的功能? Makefile 伪目标的作用?
时间: 2024-09-06 08:03:29 浏览: 51
cmake_build_cxx:使用cmake建立一个大项目。 该项目包含nultilevel目录和资源文件。 该项目包含两种构建项目的方法。 一,从源头构建所有项目。 第二,从对象构建所有项目。 如果有任何错误,请给我您的建议。项目需求,一个大型工程,工程需要包括多级目录结构,需要有主程序以及单元测试,以及一些资源文件进行进行项目配置。另外,处于个人爱好,比较喜欢在vs中开发代码,因此需要在vs显示需要说明的一点:由于大型工程,不同目录之间存在相互引用,并且引用顺序交替的情况,因此,本工程提供了两种构建
在Makefile中,变量的定义通常使用等号"=",变量名前可以加上"$"符号使其成为环境变量。例如:
```makefile
VAR = some value
```
要引用这个变量,直接使用$VAR即可。变量可以在命令行中替换,如$(VAR)。
`%`在模式规则中是一个特殊的占位符,代表文件名中的任何字符序列,用于匹配依赖关系中的目标文件。比如:
```makefile
%.o: %.c
gcc -c $< -o $@
```
这里`%o`表示目标文件名,`.c`表示源文件名,`$<`将自动替换为源文件的实际名称,而`$@`则会替换为目标文件的名称。
`$@`变量指的是当前正在处理的目标,`$<`则是当前活动规则链中的第一个依赖项。它们常用于生成目标文件的命令里,确保总是操作正确的输入和输出文件。
Makefile的伪目标主要有以下几个作用:
1. `.PHONY`: 用于声明那些不是由依赖关系自动触发的目标,如clean、install等,防止make误以为他们是实际存在的文件。
2. `.SUFFIXES`: 定义默认的文件扩展名到规则的映射,简化了对多个后缀支持的管理。
3. `all`: 默认的目标,当不指定目标时,make就会尝试构建它。
阅读全文