Makefile学习----变量

Linux驱动移植之makefile编译系统学习(一) 首先推荐一篇文章“跟我一起写 Makefile(http://blog.youkuaiyun.com/haoel/article/details/2886)【1】”,里面深入浅出介绍了makefile的语法。1、Makefile介绍  (摘自【1】)  makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些... 阅读详情

变量定义

符号 说明 参考 $() 或

${} 使用变量。如果要使用字符$,需写为$$。

SRC = main.c

gcc  -c  $(SRC)  -o  main

= 一般变量赋值 := 变量只能使用前面已经定义的变量。

SRC  =  main.c

OBJ  :=  $(SRC) $(INC) test.c

INC    =  test1.c

#此时$(OBJ)的值为main.c test.c

?= 如果变量没有被定义过,则赋值。否则跳过该语句。

① SRC ?= main.c

#此时$(SRC)的值为main.c

② SRC    =  test.c

     SRC  ?=  main.c

#此时$(SRC)的值为test.c

变量的高级用法

表达 说明 参考 $(var:a=b)

将变量var中所有字符串 a 结尾的替换成字符串 b。

这里结尾的标志是 空格 或者 结束符

SRC = test1.c  test2.c  test3.c

OBJ = $(SRC:.c=.o)

#此时$(OBJ)值为 test1.o  test2.o  test3.o

x = y

y = z

a := $($(x))

将变量的值当作变量

x = $(y)
y = z
z = Hello
a := $($(x))

#此时 $(a) 值为 Hello,一层一层解开即可

Makefile自动化变量

符号 说明 参考 $@

1、规则中的目标文件集合。

2、在模式规则中,如果有多个目标,$@为目标中模式定义的集合

target : obj

    @echo $@ #输出target

gcc -o target obj

$? 所有比目标新的依赖目标的集合。

#obj1.c被修改

target : obj1 obj2 obj2 obj3

    @echo $? #输出obj1

    @echo $^ #输出obj1 obj2 obj3

    @echo $+ #输出obj1 obj2 obj2 obj3

gcc -o target obj1 obj2 obj3

$^ 所有依赖目标的集合。会自动去除重复的依赖目标。 $+ 所有依赖目标的集合。不会去除重复的依赖目标。

$<

1、规则的第一个依赖文件名。

2、如果是一个目标文件使用隐含规则来重建,则它代表由隐含规则加入的第一个依赖文件。

  $%

1、当规则的目标文件是一个静态库文件时,代表静态库的一个成员名。

2、如果目标不是静态库文件,其值为空。

  $ * 在模式规则和静态模式规则中,代表“茎”。茎”是目标模式中“%”所代表的
部分。  

 

Cesium 相机操作 Cesium 提供了三种方式对相机的位置进行摆放。 阅读详情

相关推荐

C#实战:5分钟搞定西门子S7-1200 PLC数据读写(S7netplus保姆级教程)

本文详细介绍了如何使用C#和S7netplus库快速实现与西门子S7-1200 PLC的数据读写。从环境准备、连接管理到数据读写高级技巧,提供了保姆级教程和实战方案,帮助开发者绕过常见陷阱,提升工业自动化项目的开发效率。

weixin_28432777的博客 283

Makefile学习2——隐含规则

隐含规则 通配符 $@ 所有的目标文件。 $@ 表示 该单元中的所列举的所有的目标文件 $^ 所有的依赖文件。 $(TAR):$(OBJ) $(CC) $^ -o $@ $^ 表示 该单元中的所列举的所有的依赖文件

骑猪看彩虹的博客 331

200_matlab处理NCEP数据并画全球彩色的风场图

200_matlab处理NCEP数据并画全球彩色的风场图。

miaobo0的博客 1237

Makefile 使用总结

1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂. Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些日常操作. 这个需要大家发挥自己的想象力.   本篇博客是基于 {...

weixin_34005042的博客 1637

N32在Keil中J-Link识别失败的排查与修复指南

本文详细解析了在Keil开发环境中,J-Link调试器无法识别N32系列MCU的常见问题。通过分步指导,从检查修改Keil工程配置文件、更新J-Link驱动,到手动添加N32专用设备支持包,系统性地提供了排查与修复方案,帮助开发者快速恢复调试连接,确保开发流程顺畅。

299

告别手动调参!PSCAD 4.2的Multiple-Run功能,5分钟搞定交流故障批量仿真

本文详细介绍了PSCAD 4.2的Multiple-Run功能如何高效处理交流故障批量仿真,告别传统手动调参的低效模式。通过五步配置法,工程师可在5分钟内完成数百次参数组合的仿真,显著提升电力系统分析效率。文章还包含工业级应用案例和高级调试技巧,助力实现故障仿真的自动化与智能化。

weixin_42552716的博客 274

Makefile 静态模式

静态模式 最近看Makefile,正常依赖没什么问题,但是遇到一些特殊的符号就有点不明白了,例如:$(objects): %.o: %.c、$<之类的。最近看了篇文章写的不错,贴出来供大家分享。 静态模式可以更加容易地定义多目标的规则,可以让我们的规则变得更加的有弹性和灵活。我们还是先来看一下语法: <targets ...>: <target-pattern>...

swj9099的博客 467

MONAI教程<1>-安装

MONAI的安装非常简单,常用的有两种方法: 直接 pip install monai 从GitHub 上安装 monai是通常配合其他库一起使用的,比如pytorch, nibabel, skimage, pillow等等。缺什么直接pip install 就行

Tina姐的博客 1万+

Linux makefile中的obj-$(XXX)

$(CONFIG_TEST) 是一个整体,$(xxx)表示引用变量 xxx   比如定义 CONFIG_TEST=y  $(CONFIG_TEST)就是y    obj-$(CONFIG_TEST) 就是 obj-y        又比如定义 CONFIG_TEST=m  $(CONFIG_TEST)就是m    obj-$(CONFIG_TEST) 就是 obj-m   ==...

gaoyuanLinkconcept的专栏 1万+

R语言计算植物群落重要值:从基础概念到优势种判定

在植被生态学研究中,重要值是衡量物种在群落中地位的核心指标,它综合了相对多度、相对频度与相对显著度三个维度,能够客观反映物种的数量优势、分布广度与空间占据能力。理解重要值的生态学逻辑,是开展群落分类、优势种判定及多样性分析的基础。而R语言凭借其批量处理、可复现和与后续多元统计无缝衔接的优势,成为生态学研究者处理样方数据的高效工具。从野外记录的宽表到标准化长表,再到分组汇总计算相对指标,R语言能够显著提升数据处理效率与准确性。本文以实测群落数据为例,系统梳理重要值的两种算法口径、基于dplyr和tidyr的完

weixin_42634811的博客 264

GEE:连续变化检测 CCD 第一步(导出ee.Algorithms.TemporalSegmentation.Ccdc函数的结果)

连续变化检测与分类(Continuous Change Detection and Classification, CCDC)主要有两个组件,一个连续变化检测 CCD,另外一个分类。在 Google Earth Engine (GEE)平台上进行 CCD 时间序列变化检测的时候,为了防止内存超限问题,将代码分为2阶段执行。第一阶段是运行 `ee.Algorithms.TemporalSegmentation.Ccdc` 函数,本文将详细介绍 CCD 的第一阶段的代码。

养乐多的博客 2492

Makefile学习之路(2) — Makefile的变量和通配符

Makefile学习之路(2) — Makefile的变量和通配符 一、变量 Makefile 也支持变量定义,变量的定义也让的我们的 Makefile 更加简化,可复用。 变量定义一般采用大写字母,赋值方式像 C 语言的赋值方式一样,如下: A = HelloWorld 变量使用即取值时使用括号将变量括起来再加$符,如下: echo $(A) 编写如下Makefile 使用make命令执行,可以看到,其实他更类似与C语言中的宏定义 另外,我们可以在echo的前面加上@符号,让该命令不显示出来 执

qq_38113006的博客 1628

第十二章 供水管网水力模型软件介绍

本文介绍了国内外主要供水管网建模软件及其特点,重点分析了某高建模软件V14的创新功能。国际主流软件包括开源的EPANET、商业软件InfoWorksWS、WaterGEMS和MIKEURBAN,各具特色但存在应用局限。某高V14软件实现了管网GIS与模型一体化管理,采用一G多网、一网多模、一模多案、网模合一技术路线,支持全信息模型建立和动态数据更新。其创新点包括水量分配理念革新(精确/模糊匹配、三种用水模式)和首创Web服务功能。通过并发计算、GPU加速等技术优化性能,具有较高性价比。

weixin_45258875的博客 207

Makefile学习总结之Makefile中的变量

Makefile中的变量 1. Makefile中变量的特征: a) Makefile 中变量和函数的展开(除规则命令行中的变量和函数以外),是在 make读取 makefile 文件时进行的,这里的变量包括了使用“=”定义和使用指示符“define”定义的。 b) 变量可以用来代表一个文件名列表、编译选项列表、程序运行的选项参数列表、搜索源文件的目录列表、编译输出的目录列表和所有我们能够想到...

Good Good Study Day Day Up!!! 504

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Makefile学习4:Makefile中的变量

Makefile中的变量与系统常量

weixin_45783574的博客 451

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Makefile学习之变量

本文内容基本参考《GNU make中文手册》。 1、变量的引用 引用变量使用 $ (VAR)或$ {VAR},与shell脚本不同的是,在Makefile中必须用括号将变量名包裹起来,否则Makefile会默认变量第一个字母为变量名。 2、变量的定义 Makefile中定义变量和C语言define差不多,是严格的文本替换。 变量的定义有递归展开式和直接展开式两种。 递归展开式变量一般是通过defi...

weixin_40746176的博客 361

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

makefile 学习笔记 二:makefile变量

一、变量定义语法 变量的名称 = 值列表 变量的名称可以由大小写字母、阿拉伯数字和下划线构成。 等号左右的空白符没有明确的要求,因为在执行 make 的时候多余的空白符会被自动的删除。 至于值列表,既可以是零项,又可以是一项或者是多项。 变量使用可以用 $( ) 或 ${ } 二、变量赋值 1、赋值符 简单赋值 ( := ) 编程语言中常规理解的赋值方式,只对当前语句的变量有效。 递归赋值 ( = ) 赋值语句可能影响多个变量,所有目标变量相关的其他变量都受影响。 条件赋值

OnlyLove_的博客 2383

Makefile学习之makefile中使用变量

在上面的例子中,先让我们看看edit的规则: edit : main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o cc -o edit main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o 我们可以看到[.o]文件

suzilong11的专栏 1223

学习《跟我一起学makefile》使用变量

文章来源 使用变量 在Makefile 中的定义的变量,就像是 C/C++ 语言中的宏一样,他代表了一个文本字串,在Makefile 中 执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其 值。在Makefile中,变量可以使用在“目标”,“依赖目标”, “命令”或是Makefile的其它部分中。 变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有 : 、 # 、 = 或是空字符(空格、回车等)。变量是大小写敏感的,“foo”、“F

Orange_Wu的博客 255

新手学习记录3:makefile学习实践--自动变量引入

新手入门,高手请不吝赐教,喷子请留情. make自动变量在makefile编程中引入 常用的自动变量如下,是一些以美元符号($)开头的符号: $@      目标文件名 $ $^                所对应的所有依赖文件列表,以空格分隔 $?               所对应的依赖文件新于目标文件的列表,以空格分隔 参照自动变量的名称,将新手学习记录1:mak

稳稳的进步 404

makefile学习(四):makefile的变量

4.makefile的变量 学自<狄泰软件学院> makefile变量的概念 makefile中支持程序设计语言中的变量的概念 makefile中的变量只代表文本数据(字符串) makefile中的变量名规则 变量名可以包含字符,数字,下划线 不能包含 ”:”,”#”,”=” 或 “ ” 变量名大小写敏感 变量的定义和使用 makefile中变量的赋值方式 简单赋值 ( :...

食梦者 381

makefile学习2:使用变量

源代码1: gyz@debian:~/mc$ cat test.c #include "std.h" int main(int argv,char **argc) { int arr[10] = {1,2,3,4,5,6,7,8,9,10}; PrintArray(10,arr); return 0; } 源代码2: gyz@debian:~/mc$ cat print...

天泉证道 492

Makefile学习1——基本格式、变量

语法 基本格式 目标(target)... : 依赖(prerequiries) <tab\> 命令(commad)   如果“依赖文件”比“目标文件”更加新,那么执行“命令”来重新生成“目标文件”。命令被执行的 2 个条件:依赖文件比目标文件新,或是 目标文件还没生成。    必须以 Tab 键缩进命令行,不能以空格键缩进 2. 注释 以#注释 # #表示注释 hello.i:hello.c gcc -E hello.c -o hello.i hello.S:hello.i

骑猪看彩虹的博客 518

makefile学习12:详细讲解变量

在 Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”,“命令”或是 Makefile的其它部分中。 变量的命名字可以包含字符、数字,下划线(可以是数字开头),但不应该含有“...

天泉证道 726

Makefile学习笔记04|Makefile运行流程与变量

Markfile学习笔记04|Makefile运行流程与变量   希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长,谢谢。 Makefile运行流程 make和makefile makefile文件主要包含了5部分内容: 显式规则.说明了如何生成一个或多个目标文件。由makefile文件的创作者指出,包括要生成的文件、文件的依赖文件、生成的命令。 隐式规则。由于makefile有自动推导的功能,所以隐式的规则可以比较粗糙地简略书写makefile文件,这是由make所支持的。 变量定义。

qq_43608728的博客 680

makefile学习笔记-makefile介绍(makefile使用变量)

20180411 makefile学习笔记-makefile介绍(makefile使用变量)在“Makefile介绍(一个示例)”一文中,我们先看一下edit的规则:edit:edit:main.o kbd.o command.o display.o \insert.o search.o file.o utils.occ -o edit main.o kbd.o command.o display...

weixin_39089680的博客 229
上一篇: MAKEFILE学习(1) gcc命令
下一篇: VMware排坑
萌哒兽
博客等级 码龄10年 192粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值