makefile '@' '$' '$$' '-' '-n ' 使用小结

2023-05-16

编译代码时,会进程接触makefile,会涉及到一些符号,由于不明白有些意思经常出现问题,在此归纳一下。
'@'     符号的使用
      通常makefile会将其执行的命令行在执行前输出到屏幕上。如果将‘@’添加到命令行前,这个命令将不被make回显出来。
      例如:@echo  --compiling module----;  // 屏幕输出  --compiling module----
                                echo  --compiling module----;  // 没有@ 屏幕输出echo  --compiling module----    
 
' - ' 符号的使用
     
     通常删除,创建文件如果碰到文件不存在或者已经创建,那么希望忽略掉这个错误,继续执行,就可以在命令前面添加 -,
     -rm dir;
     -mkdir aaadir;
' $ '符号的使用
            美元符号$,主要扩展打开makefile中定义的变量
' $$ ' 符号的使用
          $$ 符号主要扩展打开makefile中定义的shell变量
例如:
     @for dir in $(subdirs); do \
          @echo -------compiling $$dir-----------; \
          $(MAKE) -C $$dir || exit "$$?"; \
     done
以上subdir属于makefile中定义的变量,而dir则属于makefile中定义的shell变量,所有使用是使用 ‘ $$ ’ 而不是 ' $ '。
如果make执行时,带入make参数“-n”或“--just-print”,那么其只是显示命令,但不会执行命令,这个功能很有利于我们调试我们的Makefile,看看我们书写的命令是执行起来是什么样子的或是什么顺序的。 

而make参数“-s”或“--slient”则是全面禁止命令的显示。
补充说明自动化变量:

$@  表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于目标中模式定义的集合。

 

$%  仅当目标是函数库文件中,表示规则中的目标成员名。例如,如果一个目标是"foo.a(bar.o)",那么,"$%"就是"bar.o","$@"就是"foo.a"。如果目标不是函数库文件(Unix下是[.a],Windows下是[.lib]),那么,其值为空。

 

$<   依赖目标中的第一个目标名字。如果依赖目标是以模式(即"%")定义的,那么"$<"将是符合模式的一系列的文件集。注意,其是一个一个取出来的。

 

$?   所有比目标新的依赖目标的集合。以空格分隔。

 

$^   所有的依赖目标的集合。以空格分隔。如果在依赖目标中有多个重复的,那个这个变量会去除重复的依赖目标,只保留一份。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

makefile '@' '$' '$$' '-' '-n ' 使用小结 的相关文章

随机推荐

  • VsCode+LaTexWorkshop外置PDF预览配置(2021.3.3)

    随着插件版本的升级有些配置命令发生了改变 xff0c 这里只是做个简单记录 xff0c 写的比较粗糙 后面有闲工夫再来做做美工 VsCode一侧配置 34 latex workshop view pdf viewer 34 34 exter
  • MATLAB批量为png透明(抠图)图片替换添加背景

    MATLAB批量为png透明 抠图 图片替换添加背景 说明 最近有个小需求 需要抠图后将抠图的背景替换为指定图片 如果一张一张做 图片多了实在是不好用 前提 准备好背景图片 一张准备好目标图片 很多张可以利用powertoys将目标图片统一
  • PilotPi:树莓派运行PX4配置方法

    直接看最后 即可 前言 PX4开源飞控固件支持很多款硬件 包括pixhawk cuav 和 cube等 在1 12版本中px4官方开始实验性的支持树莓派直接运行 这样我们就可以在树莓派上直接运行飞控程序 考虑到树莓派处理器的性能 那么就算可
  • PX4 1.12版本后启用lpe导致飞控启动失败的问题的解决办法

    时间 20220531 问题 在PX4 升级到1 12后使用local position estimator也就是LPE后会导致飞控启动失败 从SD卡的log中可以看到是硬件错误 解决办法 将文件 PX4Firmware根目录中的文件 pl
  • 多旋翼/四旋翼半物理(硬件在环HIL)仿真

    半物理仿真平台基本框架如图所示 多旋翼HIL平台结构图 其中 xff0c 最重要的也就是中间的部分 xff0c 一个是多旋翼模型 xff0c 另一个是传感器部分实现 硬件平台目前使用的是NI的myRIO xff08 临时的 xff09 xf
  • 如何编写VeriStand custom device/custom FPGA Target以及基本原理

    在做HIL开发的时候用到了FPGA xff0c 对于Labview中可以很方便的使用FPGA xff0c 但是在用VeriStand 做模型仿真的时候 xff0c 调用FPGA就没呢么方便了 感觉就是功能还没有完善 如果想要在Labview
  • 提高github下载速度的方法【100%有效】可达到2MB/s

    在国内从github上面下载代码的速度峰值通常都是20kB s 这种速度对于那些小项目还好 xff0c 而对于大一些的并且带有很多子模块的项目来讲就跟耽误时间 虽然有很多提速的方法 xff0c 但是实际用起来并不稳定 这里提供一种新的方法
  • 如何理解选主元的Doolittle分解法

    书中讲解不是很详细 xff0c 理解之后总结一下 首先说一下 xff0c 之所以要理解选主元的Doolittle分解是因为书中对于该分解过程的讲解比较违和 本文的目的是为了说明 xff1a 选主元的Doolittle分解法分解得到的LU矩阵
  • Latex中插入eps图片不显示,显示空白

    Latex中插入eps图片变异后 xff0c 生成的pdf文件中 xff0c 图片为空白 在文章开头 documentclas 后面添加如下代码即可 usepackage graphicx usepackage epstopdf 或者 us
  • C/C++ 信号量 CreateSemaphore 用法

    HANDLE CreateSemaphore LPSECURITY ATTRIBUTES lpSemaphoreAttributes SD LONG lInitialCount initial count LONG lMaximumCoun
  • 单片机寄存器的位操作

    1 连续多位需要操作 假如需要将B16的D8 D10位改为0001 xff0c 但是更改D8 D10位时又不能改变其它位状态 xff1a 所以需要先将D8 D10位 清0 xff0c 再改为0001 PORTB gt PCR 16 amp
  • DockerFile编写、加载、镜像保存、上传阿里云镜像

    DockerFile用来构建docker镜像文件 指令 说明 FROM 指定基础镜像 MAINTAINER 镜像是谁写的 xff0c 姓名 43 邮箱 RUN 镜像构建的时候需要运行的命令 ADD 将本地文件添加到容器中 xff0c tar
  • 手把手教你写一个属于自己的库

    写在前面 xff1a 本文章使用devc 43 43 xff0c 若用VC的别进来 xff01 如果你不知道怎么写库 xff0c 请参考我这篇文章 xff1a 手把手教你建立c 43 43 个人库 在新建好库文件之后 xff0c 我们就可以
  • warning: libopencv_imgcodecs.so.3.2, needed by /...warning: libpng12.so.0, needed by /usr/local/lib/

    warning libopencv imgcodecs so 3 2 needed by opt ros melodic lib libcv bridge so may conflict with libopencv imgcodecs s
  • /usr/bin/ld: warning: libopencv_imgcodecs.so.3.2, needed by /usr/lib/x86_64-linux-gnu/libopencv_high

    出现一个警告信息 xff0c 暂时不管 usr bin ld warning libopencv imgcodecs so 3 2 needed by usr lib x86 64 linux gnu libopencv highgui s
  • 灰度图像二值化-----c++实现

    前天闲着没事干 xff0c 就写了写BMP图像处理 xff0c 感觉大家还比较感兴趣 所以现在没事 xff0c 继续更新 这次简单的写了灰度图像二值化 这是什么概念呢 xff1f 图像的二值化的基本原理 图像的二值化处理就是将图像上的点的灰
  • 3D打印情况记录(1)

    打印情况记录 xff08 1 xff09 打印参数打印结果 打印参数 切片软件MakerBot Print xff0c 温度195 xff0c 材料白色pla xff0c 外壳打印速度40mm s xff0c 内衬打印速度稀疏30mm s
  • 【在VScode中使用终端命令编译运行c++程序】

    在VScode下的powershell下使用命令行编译运行c 43 43 文件 xff1a 首先 xff0c 进入文件所在的路径地址 xff1a 编译生成 exe可执行文件的不同方式 xff1a 不指定生成可执行文件的名称 xff1a 执行
  • 连接字符串strcat()函数

    strcat 函数的原型 xff1a span class hljs preprocessor include lt string h gt span span class hljs keyword char span span class
  • makefile '@' '$' '$$' '-' '-n ' 使用小结

    编译代码时 xff0c 会进程接触makefile xff0c 会涉及到一些符号 xff0c 由于不明白有些意思经常出现问题 xff0c 在此归纳一下 39 64 39 符号的使用 通常makefile会将其执行的命令行在执行前输出到屏幕上