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中重复使用。

相关文章
|
Prometheus 监控 数据可视化
模型被挤了?立即查看服务器GPU/CPU占用,别再误杀他人进程!
模型在服务器上跑得好好的,突然就“卡”了甚至被挤掉?别急着抱怨!本文手把手教你如何优雅地查看共享服务器的CPU和GPU占用情况,学会做一个有素质的“共享玩家”,告别模型被挤的尴尬!文末还有硬核忠告和Linux学习建议。
1859 87
|
传感器 智能硬件
未来家居:智能窗帘的设计与实现
【5月更文挑战第31天】本文将探讨智能窗帘的设计和实现,包括其工作原理、主要组件以及如何通过智能家居系统进行控制。我们将详细介绍智能窗帘的硬件和软件设计,以及如何将其集成到现有的智能家居系统中。
|
安全 JavaScript Ubuntu
LinkKit SDK 接入阿里云物联网平台(2)| 学习笔记
快速学习 LinkKit SDK 接入阿里云物联网平台(2)
1457 1
LinkKit SDK 接入阿里云物联网平台(2)| 学习笔记
|
安全 Cloud Native 网络安全
阿里云飞天企业版PaaS平台通过等保四级能力评估
近日,阿里云飞天企业版PaaS平台(专有云平台)安全防护能力获得权威机构公安部第三研究所认可。阿里云飞天企业版PaaS平台(专有云平台)参照等级保护第四级开展安全能力建设,在近日的安全评估活动中,获得优异成绩。本次评估验证了飞天企业版PaaS平台及容器安全能力,证明阿里云可以为政企客户提供更高水平的云原生安全能力。
915 1
|
安全 开发工具 虚拟化
6 大亮点!全新 Anolis OS 23.1 GA 版正式发布,满足多样化平台支持
结合新时代技术发展需求,龙蜥正式发布全新发行版 Anolis OS 23.1。
|
编译器 API C语言
芯片验证 | 理解SystemVerilog DPI并不难
芯片验证 | 理解SystemVerilog DPI并不难
2151 0
|
并行计算 PyTorch 算法框架/工具
YOLOv5入门实践(1)——手把手带你环境配置搭建
YOLOv5入门实践(1)——手把手带你环境配置搭建
8726 1
YOLOv5入门实践(1)——手把手带你环境配置搭建
|
数据可视化 算法 数据挖掘
JCR一区7.2分|非肿瘤内质网应激切入点,发文不难,非常好复现
这篇研究探讨了内质网应激在扩张型心肌病纤维化中的作用,通过基因综合分析揭示了相关免疫反应。在Apoptosis杂志上发表的文章指出,内质网应激可能与疾病恶化相关,涉及先天和适应性免疫失衡。研究整合了两个数据集,鉴定出103个内质网应激相关基因,其中7个基因可能参与免疫机制。研究结果为理解内质网应激的分子机制和开发新疗法提供了新视角。
449 0