Makefile变量的引用与赋值

简介: Makefile变量的引用与赋值

Makefile变量的引用与赋值

在Makefile中,变量的引用和赋值是非常常见和重要的概念,它们使得Makefile更加灵活和可维护。下面是一些关于变量引用和赋值的代码示例,以便大家更好地理解它们的用法:

1. 变量赋值示例:

# 定义变量

CC = gcc

CFLAGS = -Wall -O2

 

# 使用变量

all:

   $(CC) $(CFLAGS) main.c -o my_program

 

在这个例子中,CC 和 CFLAGS 是两个变量,分别存储了编译器和编译选项。通过在Makefile中赋值这些变量,可以在整个Makefile中引用它们来执行编译操作。这使得在编译过程中更容易进行修改和维护,例如更改编译器或添加编译选项。

2. 变量引用示例:

# 定义变量

SRCS = main.c foo.c bar.c

OBJS = $(SRCS:.c=.o)

 

# 使用变量

all: $(OBJS)

   gcc $^ -o my_program

 

# 默认规则

%.o: %.c

   gcc -c $< -o $@

 

在这个例子中,SRCS 变量存储了所有的源文件,OBJS 变量使用了替换(substitution)功能,将所有的.c文件替换成了.o文件,用于构建目标文件列表。通过使用 $(OBJS),我们可以在 all 目标中引用它来构建最终的可执行文件。这种方式使得Makefile更加灵活,因为只需在一个地方定义源文件列表,即可自动生成目标文件列表。

3. 高级变量赋值和引用示例:

# 条件变量赋值

DEBUG ?= 0

ifeq ($(DEBUG), 1)

   CFLAGS += -g

endif

 

# 变量引用

LIBS = -lm

all: $(OBJS)

   gcc $^ $(LIBS) -o my_program

 

在这个例子中,DEBUG 变量是一个条件变量,它可以在命令行上进行覆盖赋值。如果没有指定,则默认为0。根据 DEBUG 变量的值,我们可以动态地向 CFLAGS 变量中添加 -g 选项以进行调试。另外,LIBS 变量存储了需要链接的库列表,通过将其引用添加到链接命令中,可以使得Makefile更加灵活地进行链接操作。

通过这些示例,可以看到变量的引用和赋值在Makefile中的重要性和灵活性。它们使得Makefile更易于维护和扩展,因为可以将常用的值存储在变量中,并在整个Makefile中重复使用。

相关文章
|
SQL 数据可视化 关系型数据库
5个实用的SQLite数据库可视化工具(GUI)
5个实用的SQLite数据库可视化工具(GUI)
3787 3
|
传感器 智能硬件
未来家居:智能窗帘的设计与实现
【5月更文挑战第31天】本文将探讨智能窗帘的设计和实现,包括其工作原理、主要组件以及如何通过智能家居系统进行控制。我们将详细介绍智能窗帘的硬件和软件设计,以及如何将其集成到现有的智能家居系统中。
|
存储 算法 数据挖掘
数据无罪,使用有度:从技术人角度谈数据伦理
数据无罪,使用有度:从技术人角度谈数据伦理
612 9
|
Ubuntu 网络协议 Linux
在Linux中,发行版和内核有什么区别?
在Linux中,发行版和内核有什么区别?
|
负载均衡 网络协议 中间件
掌握 SOME/IP :访问进程数据 构建高效通信系统的关键技术
掌握 SOME/IP :访问进程数据 构建高效通信系统的关键技术
826 2
|
NoSQL 程序员 C语言
探秘Segmentation Fault错误:程序猿的噩梦
探秘Segmentation Fault错误:程序猿的噩梦
3523 0
|
存储 算法 关系型数据库
TDengine 3.3.0.0 发布:图形化管理工具、复合主键等10+ 功能更新
在涛思数据研发团队的努力下,TDengine 3.3.0.0 版本终于和大家见面了。这一版本中,我们引入了多项革新功能和性能优化,力求在为用户提供极致体验的同时,不断推动技术的前沿。
506 0
|
数据可视化 算法 数据挖掘
JCR一区7.2分|非肿瘤内质网应激切入点,发文不难,非常好复现
这篇研究探讨了内质网应激在扩张型心肌病纤维化中的作用,通过基因综合分析揭示了相关免疫反应。在Apoptosis杂志上发表的文章指出,内质网应激可能与疾病恶化相关,涉及先天和适应性免疫失衡。研究整合了两个数据集,鉴定出103个内质网应激相关基因,其中7个基因可能参与免疫机制。研究结果为理解内质网应激的分子机制和开发新疗法提供了新视角。
423 0
|
开发工具 git
git 强制更新远程分支覆盖本地分支
git fetch --all git reset --hard origin/分支名称 git pull
1509 0