makefile系统变量
时间: 2023-08-21 07:08:24 浏览: 101
Makefile 是一个用于自动化构建和管理软件项目的工具,它使用 Makefile 文件来定义项目的构建规则。Makefile 中可以使用系统变量来获取系统相关的信息。
以下是一些常用的 Makefile 系统变量:
1. `CC`:指定 C 编译器的名称,默认为 `cc`。
2. `CFLAGS`:指定 C 编译器的编译参数。
3. `LDLIBS`:指定链接器的库参数。
4. `LDFLAGS`:指定链接器的链接参数。
5. `CPPFLAGS`:指定预处理器的参数。
6. `AR`:指定静态库打包工具的名称,默认为 `ar`。
7. `ARFLAGS`:指定静态库打包工具的参数。
8. `RM`:指定删除文件的命令,默认为 `rm -f`。
9. `MAKE`:指定执行 make 命令的名称,默认为 `make`。
这些系统变量可以在 Makefile 中直接使用,例如:
```
CC = gcc
CFLAGS = -Wall -O2
all: myprogram
myprogram: main.o helper.o
$(CC) $(CFLAGS) -o $@ $^
clean:
$(RM) *.o myprogram
```
在上面的例子中,`CC` 和 `CFLAGS` 分别指定了编译器和编译参数,`RM` 指定了删除文件的命令。
相关问题
makefile脚本使用系统变量
在Makefile脚本中,可以使用系统的环境变量。当Makefile文件中对相应环境变量有重新定义时,make会使用文件中的值,除非使用了-e参数。优先级为:命令行 > 文件内定义 > 系统设置。默认情况下,命令行中设置的变量会自动传递到下层Makefile,环境变量也是一样的,若命令行没有设置又想传递到下层,需要使用export关键字。另外,最高一级的Makefile称为总控Makefile,总控Makefile的变量可以传递到下级的Makefile中(如果你显示的声明),但是不会覆盖下层的Makefile中所定义的变量,除非指定了“-e”参数。想要传递变量到下级Makefile,可以使用export参数修饰,不想传递的参数可以用unexport修饰。需要注意的是,有两个变量,一个是SHELL,一个是MAKEFLAGS,这两个变量不管你是否export,其总是要传递到下层Makefile中。MAKEFLAGS是一个系统级的变量,想不传递它需要在make参数中添加上“MAKEFLAGS=” ,即将它在下级Makefile重新赋空值。
#### 引用[.reference_title]
- *1* *2* [Makefile命令与变量](https://blog.csdn.net/Suffocatingg/article/details/127922649)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [Makefile中执行shell脚本](https://blog.csdn.net/wsclinux/article/details/52274074)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文