Makefile中的变量

此处的变量不是C/C++,Java等中的变量(认为他是一个字符串就阔以了)

一般变量名用大写字母来写,如下所属:

SUBDIR = src xml
SUBDIR += osapi

(感觉这个和Qt里面的pro加模块的差不多)

echo命令,这条命令和php中的echo差不多

定义一个SUBDIR变量:
1.用=号定义一个变量,并且赋值(等号两侧可以加一个空格);
2.用+=追加字符串
3.用$(SUBDIR)取得到变量的值(要加小括号)

如下面的Makefile代码:

#this is an annotationSUBDIR=src xml
SUBDIR+=osapitest1:echo $(SUBDIR)

运行截图如下:

注意:在@符号后,就可以不显示命令本身,直接输出

Makefile源码如下:

#this is an annotationSUBDIR=src xml
SUBDIR+=osapitest1:@echo $(SUBDIR)

运行截图如下:

特殊的变量:
$@指代target
$^指代dependencies依赖项列表
$<指代依赖项列表的第一列

Makefile源码如下:

#this is an annotationSUBDIR=src xml
SUBDIR+=osapitest1:@echo $(SUBDIR)test2:echo $@test3: main.cpp first.cpp second.cppecho $^test4: main.cpp first.cpp second.cppecho $<

程序运行截图如下:

Makefile中的函数
与C/C++里面的函数不一样,他是内部预定的函数

Makefile中有一些预定义的函数
$(函数名 参数列表)
函数名:Makefile内部自带的函数
参数列表:以逗号分开另,函数名和参数之间以空格分开
例如:
PWD=$(shell pwd)
CXX_SOURCE=$(wildcard ./*.cpp)

【注意:Makefile里面好像必须加shell】

如下的Makefile源码:

#this is an annotationSUBDIR=src xml
SUBDIR+=osapiPWD=$(shell pwd)
CXX_SOURCE=$(wildcard *.cpp)test1:@echo $(SUBDIR)test2:echo $@test3: main.cpp first.cpp second.cppecho $^test4: main.cpp first.cpp second.cppecho $<test5:@echo $(PWD)test6:@echo $(CXX_SOURCE)

运行截图如下:

Linux学习笔记-Makefile中的变量及函数相关推荐

  1. JavaScript学习笔记——JS中的变量复制、参数传递和作用域链

    今天在看书的过程中,又发现了自己目前对Javascript存在的一个知识模糊点:JS的作用域链,所以就通过查资料看书对作用域链相关的内容进行了学习.今天学习笔记主要有这样几个关键字:变量.参数传递.执 ...

  2. Linux学习笔记-Makefile的基本使用

    程序自动编译: 在vc中,点击"生成解决方案"就能生成解决方案: 在linux中使用Makefile,是一个脚本文件,和vc中生成解决方案差不多. 写如下代码: other.h v ...

  3. Linux学习笔记012---Centos7修改环境变量

    JAVA技术交流QQ群:170933152 方法一(暂时生效) 直接运行命令export PATH=$PATH:/usr/local/MATLAB/R2013a/bin ,使用这种方法,只会对当前回话 ...

  4. Linux学习笔记007---Centos7中配置静态ip

    JAVA技术交流QQ群:170933152 按步骤来是没问题的: 这里注意vim,有的系统没有装,所以需要用vi来配置 如果linux操作系统通过dhcp无法自动获取IP地址,需要手动设置静态IP地址 ...

  5. linux学习笔记——gdb中的watch使用方法

    参考链接 参考链接二 先将程序跑起来:1.直接r后再watch 变量名.2.先在观察变量处设置断点,再r至断点处,再watch 变量名. c后程序会跑到变量改变时. 注:watch其实是设置观察断点, ...

  6. Linux学习笔记4-CentOS7中redis3.2.9安装教程

    redis下载地址:http://www.redis.cn/download.html 1.将下载过来的redis-3.2.9.tar.gz文件复制到/usr/local文件夹下 2.tar xzf ...

  7. Linux学习笔记-Makefile优化之头文件依赖

    如果头文件被更新,则包含了它的cpp文件应该被重新编译. 比如first里面有个函数,main函数调用了first里面的函数,那么first.h变化了,main肯定要重新编译 这里有个知识点: -MM ...

  8. Linux学习笔记008---Centos7中Couldn't resolve host 'mirrorlist.centos.org'

    JAVA技术交流QQ群:170933152 这个问题,由于本地上不了网: 是因为没有配置dns解析 centos中配置dns解析: [root@sulei sulei]# yum install do ...

  9. Linux学习笔记013---CentOs7中vsftpd的安装和卸载

    JAVA技术交流QQ群:170933152 查看是否安装了vsftp: rpm -qa |grep vsftp 卸载vsftp rpm -e vsftp 安装vsftp yum install -y ...

最新文章

  1. TCP/IP和OSI4层、7层协议介绍
  2. 操作系统上机作业-- 使用信号量解决生产者、计算者、消费者问题(多线程)
  3. ktv点歌系统安卓_喜事汇KTV设备更新语音点歌系统,特推出一下优惠活动。转发朋友圈有惊喜。...
  4. SQL Server 2005导入导出存储过程
  5. 关于计算机的内存的一点常识
  6. 【源码部署】Linux系统部署suricata
  7. 使用python显示图像在windows图片查看器中一直显示加载中就是打不开的解决途径
  8. juniper防火墙常用配置
  9. DAO数据访问对象(Data Access Object)
  10. Python学习笔记--day09 函数 模块 (文件、路径操作)
  11. ai人工智能软件开发模式介绍
  12. 法国《队报》:贝利领衔世界杯32大传奇球员
  13. “区块链+农业”助力乡村振兴
  14. NOI2018金色记
  15. 计算机考研考线代和概率论吗,2018考研数学各章节考点汇总(高数+线代+概率论)...
  16. 【网络工程零基础】小白零基础,详细教程一看就能学会
  17. 设置子网掩码,子网的地址范围
  18. android list排序,使用Collections.sort()对List/ArrayList进行排序
  19. Raft算法详细介绍
  20. 水彩风职业规划PP模板

热门文章

  1. 刚进职场的程序员,请万分珍重你的第一份工作,不要轻易辞职!
  2. Ubuntu下安装和配置Apache及Apache2
  3. 利用营销工具,这家企业从按经验办事的老中医,变为数据化中西医
  4. 学习组合模式,转载一段有关组合模式的详解
  5. 伪原创工具安全第一嘛~~
  6. FreeEIM通讯软件无论是画面风格还是游戏内容
  7. FreeBSD5.0内核 - 锁机制
  8. daab 3.1使用笔记
  9. IT男1-10分打分标准,请对号入座!
  10. 百度AI智能小程序正式开放申请