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

相关文章
|
6月前
|
编译器 C++
CPP的常量引用
CPP的常量引用
52 0
|
6月前
|
C++
c++常见变量
c++常见变量
53 0
|
存储 Shell 编译器
makefile 变量赋值方式
makefile 变量赋值方式
95 1
|
12天前
a、b、c 三个变量
【10月更文挑战第31天】a、b、c 三个变量.
26 4
|
6月前
|
存储 C语言 容器
C变量
C变量
38 1
makefile 变量的替换,嵌套引用,命令行变量
makefile 变量的替换,嵌套引用,命令行变量
107 1
|
6月前
|
Shell
变量的定义和引用
变量的定义和引用。
78 0
|
存储 编译器 C语言
为什么C语言全局变量初始化元素必须是常量,而局部变量可以不是常量
为什么C语言全局变量初始化元素必须是常量,而局部变量可以不是常量
113 0
|
C++
C++的引用 拷贝赋值和引用赋值
C++的引用 拷贝赋值和引用赋值
290 0
|
人工智能 Shell
将结果分别赋值给变量
将结果分别赋值给变量
63 0