首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Makefile拆分变量

是指在Makefile中将一个较长的变量拆分为多个较短的变量,以提高可读性和维护性。通过拆分变量,可以将相关的配置信息组织在一起,方便管理和修改。

在Makefile中,可以使用字符串操作函数来拆分变量。常用的字符串操作函数包括:

  1. subst函数:用于替换字符串中的指定字符。语法为$(subst from,to,text),将text中的所有from替换为to
  2. patsubst函数:用于模式匹配替换字符串。语法为$(patsubst pattern,replacement,text),将text中符合pattern模式的部分替换为replacement
  3. wildcard函数:用于获取指定目录下的文件列表。语法为$(wildcard pattern),返回符合pattern模式的文件列表。

下面是一个示例,演示如何拆分变量:

代码语言:txt
复制
# 定义一个较长的变量
SOURCE := src/main.c src/utils.c src/config.c

# 使用subst函数将空格替换为换行符,拆分为多行变量
SOURCE_LIST := $(subst  ,\
, $(SOURCE))

# 使用patsubst函数将.c文件替换为.o文件,生成目标文件列表
OBJECTS := $(patsubst %.c,%.o,$(SOURCE_LIST))

# 打印拆分后的变量
.PHONY: all
all:
    @echo "源文件列表:$(SOURCE_LIST)"
    @echo "目标文件列表:$(OBJECTS)"

执行make命令后,将输出拆分后的变量值:

代码语言:txt
复制
源文件列表:src/main.c
src/utils.c
src/config.c
目标文件列表:src/main.o src/utils.o src/config.o

通过拆分变量,可以更清晰地组织代码和配置信息,提高Makefile的可读性和可维护性。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 腾讯云云服务器(CVM):提供弹性计算能力,满足各类业务需求。产品介绍链接
  • 腾讯云对象存储(COS):提供高可靠、低成本的云端存储服务,适用于图片、视频、文档等各类文件的存储和访问。产品介绍链接
  • 腾讯云云数据库MySQL版(TencentDB for MySQL):提供高性能、高可用的关系型数据库服务,适用于各类应用场景。产品介绍链接

请注意,以上推荐的腾讯云产品仅供参考,具体选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

makefile变量赋值

大家好,又见面了,我是全栈君 在定义变量的值时,我们可以使用其它变量来构造变量的值,在Makefile中有两种方式来在用变量定义变量的值。...先看第一种方式,也就是简单的使用“=”号,在“=”左侧是变量,右侧是变量的值,右侧变量的值可以定义在文件的任何一处,也就是说,右侧中的变量不一定非要是已定义好的值,其也可以使用后面定义的值。...可见,变量是可以使用后面的变量来定义的。...“MAKELEVEL”,其意思是,如果我们的make有一个嵌套执行的动作(参见前面的“嵌套使用make”),那么,这个变量会记录了我们的当前Makefile的调用层数。...因为在操作符的右边是很难描述一个空格的,这里采用的技术很管用,先用一个 Empty变量来标明变量的值开始了,而后面采用“#”注释符来表示变量定义的终止,这样,我们可以定义出其值是一个空格的变量

1.3K20

makefile

前言 这几天的实验让我觉得有必要学习一下makefile 参考博客:博客 会不会写makefile,从一个侧面说明了一个人是否具有完成大型工程的能力 makefile带来的好处是自动化编译 规则...输入 make clean 才可以执行 变量 出于对makefile的易维护性的考虑,引入了变量的概念: objects=main.o kbd.o command.o display.o \ insert.o...读入被include的其它Makefile。 初始化文件中的变量。 推导隐晦规则,并分析所有规则。 为所有的目标文件创建依赖关系链。 根据依赖关系,决定哪些目标要重新生成。 执行生成命令。...文件,上级的makefile变量可以传到下一级: export ; 传递所有变量的话只需一个export,不需要任何变量名称 变量 变量可以使用变量: foo=$(bar)bar=$(ugh...变量值的替换 foo :=a.o b.o c.obar :=$(foo:.o=.c) 第二行把foo中的.o全部换为.c 追加变量值: objects = main.o foo.o bar.o utils.oobjects

1K20

makefile

(2)变量定义:在Makefile中可以定义一系列的变量变量一般都是字符串,当Makefile被执行时,变量的值会被扩展到相应的引用位置上。...2.1 Makefile中的变量 (1)Makefile中定义的变量,与C/C++语言中的宏一样,代表一个文本字串,在Makefile被执行时候变量会自动地展开在所使用的地方。...Makefile中的变量可以使用在“目标”,“依赖目标”,“命令”或Makefile的其它部分中。...(3)Makefile变量是大小写敏感的。“foo”、“Foo”和“FOO”是三个不同的变量名。传统的Makefile变量名是全大写的命名方式。...2.4 Makefile中的函数 在Makefile中可以使用函数来处理变量,从而让命令或规则更为的灵活和具有智能,函数调用,很像变量的使用,也是以“$”来标识的,函数调用后,函数的返回值可以当做变量来使用

1.9K00

makefile 基础、进阶及常用 makefile

gcc main.o add.o sub.o mul.o -o app makefile 变量 接下来我们引入 makefile 变量机制,来修改一下上面的 makefile 文件。...,注意变量在使用的时候要加 $(),中间变量名字。...makefile 自动变量 makefile 中有一些预定义的变量,你可以理解它像是 C 语言中的一些关键字,分别有不同的意义,我们列举几个常用的自动变量(其他还有很多),通过上面的 makefile...如下所示: # 获取所有 .c 文件的列表赋值给 src 变量 src = $(wildcard *.c) # 根据 src 变量获取 .o 文件列表存放到 obj 变量中 obj = $(patsubst...我们也可以添加一些自定义的变量,让以后 makefile 维护起来更方便: # 获取所有 .c 文件的列表赋值给 src 变量 src = $(wildcard *.c) # 根据 src 变量获取 .

30610

Makefile总结

变量在声明时赋予初值,引用变量时需要在变量名前加上”$”符号,用小括号”()”或大括号”{}”把变量括起来。...用=定义一个变量,并且赋值(等号两边可以加空格) 用+=追加字符串 例: A = src echo $(A) @echo $(A) ##只输出echo的结果,不显示执行的命令 可对上述的Makefile...: $@ 目标文件 $^ 依赖项列表 $< 依赖项列表第一项 通过make -p可以查看很多自定义的变量,如CC(默认值为cc),RM(默认值为rm -f) 可对上述的Makefile再进行修改: CC...在调用子目录Makefile,有时我们需要传递参数,两种方法: 方法一: 在上层Makefile中使用”export”关键字对要传递的变量进行声明。...export DIR = /var/log 相反如不希望传递变量,可以使用”unexport”关键字 方法二: 在调用子Makefile命令上指定变量

91510

SAS-如何找出数据集超长变量及观测,并自动进行变量拆分...

前段时间有人给小编提了一个需求,找出数据集中长度超过200字节的变量,并对变量进行拆分...这个需求当然不难,但是还是分享给大家~主要最近没写啥程序,也就没学到啥新的技能...关于变量长度的拆分,我想也是一个常见的问题...写了一半就不想开放了...然后又懒的修改前面的,也就弄一个默认值这里 而且后面的计算规则也基本都是依据200长度来写的 ... 3.cnt:拆分后衍生变量之间的间隔符号,默认为空 下面这段程序的功能就是...200长度变量,则将这样变量塞入宏变量中 同时利用_N_给每条观测添加一个行号.......下面的宏变量就是用来存放衍生程序的语句 新生成的变量,小编采用的ksubstr来拆分变量,为什么用Ksubstr 这个地方不好言传,可以慢慢意会......269个字符,我在此处进行拆分3个语句... ?

3.4K31

跟我一起写Makefile:MakeFile介绍

所以,为了makefile的易维护,在makefile中我们可以使用变量makefile变量也就是一个字符串,理解成C语言中的宏可能会更好。...在Makefile中我们要定义一系列的变量变量一般都是字符串,这个有点像你C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。 文件指示。...环境变量 MAKEFILES 如果你的当前环境中定义了环境变量MAKEFILES,那么,make会把这个变量中的值做一个类似于include的动作。这个变量中的值是其它的Makefile,用空格分隔。...只是,它和include不同的是,从这个环境变量中引入的Makefile的“目标”不会起作用,如果环境变量中定义的文件发现错误,make也会不理。...但是在这里我还是建议不要使用这个环境变量,因为只要这个变量一被定义,那么当你使用make时,所有的Makefile都会受到它的影响,这绝不是你想看到的。

97520

makefile终极奥义

上述还只是简单的makefile,属于「显式规则」,那么为了优化makefile我们介绍「隐式规则」 makefile中使用变量Makefile中我们要定义一系列的变量变量一般都是字符串,这个有点...Makefile变量有四种定义(赋值)方式: 1,简单赋值( := ) 编程语言中常规理解的赋值方式,只对当前语句的变量有效(推荐使用) 2,递归赋值( = )赋值语句可能影响多个变量,所有目标变量相关的其他变量都受影响...OBJ:=main.o #定义变量 #引用变量 ${OBJ} #使用变量 $(OBJ) #推荐使用 除了自己定义的变量之外makefile还提供了预定义的变量 在隐含规则中的命令中,基本上都是使用了一些预先设置的变量...你可以在你的makefile中改变这些变量的值,或是在make的命令行中传入这些值,或是在你的环境变量中设置这些值 命令的变量 变量 默认命令 意义 AR 默认命令是 ar 函数库打包程序。...在Makefile中我们要定义一系列的变量变量一般都是字符串,这个有点像你C语言中的宏,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上。 函数。

1.3K30

Kconfig与Makefile

毫不夸张地说,Kconfig和Makefile是我们浏览内核代码时最为依仗的两个文件。基本上,Linux内核中每一个目录下边都会有一个Kconfig文件和一个Makefile文件。...Kconfig和Makefile就是Linux Kernel迷宫里的地图。地图引导我们去认识一个城市,而Kconfig和Makefile则可以让我们了解一个Kernel目录下面的结构。...利用Kconfig和Makefile寻找目标代 就像利用地图寻找目的地一样,我们需要利用Kconfig和Makefile来寻找所要研究的目标代码。...接下来阅读Makefile文件。...Kconfig和Makefile很好的帮助我们定位到了所要关注的目标,就像我们到一个陌生的地方要随身携带地图,当我们学习Linux内核时,也要谨记寻求Kconfig和Makefile的帮助。

1.6K20
领券