#本文件自动进行build。
##########修改如下内容进行自定义。#######
PROGRAM   := hello.exe
SRCDIRS   :=.
SRCEXTS   :=.cpp
#########################################
SOURCES := $(foreach d,$(SRCDIRS),$(wildcard $(addprefix $(d)/*,$(SRCEXTS))))
OBJS    := $(foreach x,$(SRCEXTS), \
$(patsubst %$(x),%.o,$(filter %$(x),$(SOURCES))))
DEPS    = $(patsubst %.o,%.d,$(OBJS))
.PHONY : all obj
all : $(PROGRAM)
$(PROGRAM) : $(OBJS)
g++ -o $(PROGRAM) $(OBJS)
objs : $(OBJS)
%.d: %.cpp
g++ -MM -MD  $<
-include $(DEPS)

关于%和*的不同:下面这段话仔细品味:  
一个是变量(所有的%代表的是相同的字符串,以第一次匹配上为标准),一个是通配。  
一般我们可以使用“$(wildcard *.c)”来获取工作目录下的所有的.c文件列表。复杂一些用法;可以使用“$(patsubst %.c,%.o,$(wildcard *.c))”,首先使用“wildcard”函数获取工作目录下的.c文件列表;之后将列表中所有文件名的后缀.c替换为.o。这样我们就可以得到在当前目录可生成的.o文件列表。因此在一个目录下可以使用如下内容的Makefile来将工作目录下的所有的.c文件进行编译并最后连接成为一个可执行文件:  
#sample Makefile  
objects := $(patsubst %.c,%.o,$(wildcard *.c))  
foo : $(objects)  
cc -o foo $(objects)  
这里我们使用了make的隐含规则来编译.c的源文件。对变量的赋值也用到了一个特殊的符号(:=)。关于变量定义可参考6.2 两种变量定义一节。函数“patsubst”可参考8.2 文本处理函数一节  
#关于.d文件。有这两段话,帮助理解为何生成.d文件  
---makefile的包含  
“include”指示符告诉make暂停读取当前的Makefile,  
而转去读取“include”指定的一个或者多个文件,  
完成以后再继续当前Makefile的读取。  
---makefile的更新(包括自我更新)  
make在读入所有makefile文件之后,  
首先将所读取的每个makefile作为一个目标,  
寻找更新它们的规则。  
如果存在一个更新某一个makefile文件明确规则或者隐含规则,  
就去更新对应的makefile文件。

自动化Build的方法如下所示相关推荐

  1. python wait_window_pywinauto客户端自动化---窗口等待方法

    我们在做web和app的ui自动化过程中,常用到等待机制,那客户端自动化有这个方法吗?python这么强大,肯定是有方法解决的 等待机制 pywinauto等待有两种方法: 方法一: wait() w ...

  2. Java自动部署maven_Maven+Tomcat8 实现自动化部署的方法

    本文介绍了maven+tomcat8 实现自动化部署的方法,分享给大家,具体如下: 1.配置tomcat-users.xml 首先在tomcat里配置deploy的用户(tomcat根目录/conf/ ...

  3. router vue 多个路径_多个vue子路由文件自动化合并的方法,

    多个vue子路由文件自动化合并的方法, 1. 目录结构 废话不多说,直接上图. 目录结构,如下图所示 2. 代码编写位置 在router目录下面的index.js文件中写入以下代码 import Vu ...

  4. selenium自动化测试_维持Selenium测试自动化的完美方法

    selenium自动化测试 毫无疑问, 自动浏览器测试已改变了软件开发的工作方式. 如果不是Selenium,我们将无法像我们一样使用各种各样的无错误的Web应用程序. 但是有时,甚至IT部门也误解了 ...

  5. 维持硒测试自动化的完美方法

    毫无疑问, 自动浏览器测试已经改变了软件开发的工作方式. 如果不是Selenium,我们将无法像我们一样使用各种各样的无错误Web应用程序. 但是有时,甚至IT部门也误解了自动化一词. 大多数人认为计 ...

  6. python3使用staf问题_python调用staf自动化框架的方法

    1.配置环境 支持python2和python3 On Linux, Solaris, or FreeBSD, add the /usr/local/staf/lib directory to you ...

  7. pyautogui桌面自动化基础使用方法

    pyautogui桌面自动化基础使用方法 PyAutoGUI通过接管鼠标.键盘使用权,基本上模拟真人操作,可以解放人重复操作的行为. 1. 获取基础信息 1.1 屏幕信息 获取屏幕尺寸(分辨率×分辨率 ...

  8. c2665 “initgraph”: 2 个重载中没有一个可以转换所有参数类型_一个使用延迟候选项生成的用于自动化程序修复方法的工具...

    论文:Jinru Hua, Mengshi Zhang, Kaiyuan Wang, and Sarfraz Khurshid. 2018. SketchFix: A Tool for Automat ...

  9. Android自动化的一般方法

    1 背景 https://mp.weixin.qq.com/s/B7o3JSkYI_9c4RivatsZKQ Android自动化包含自动化测试和第三方App的自动化运行,这里的自动化测试主要指的是纯 ...

最新文章

  1. validate插件深入学习-01 小白从看透一个插件开始
  2. 递归删除N天前的文件夹及子文件夹下的特定文件
  3. eclipse 设置 默认编码为 utf-8
  4. redis——持久化
  5. Flex 中 12 个简单实用的小技巧
  6. 【渝粤教育】广东开放大学 建筑设备 形成性考核 (33)
  7. Android使用adb命令查看CPU信息
  8. Cache和DMA一致性 iCache和dCache一致性
  9. 《研磨设计模式》builder生成器模式(golang)
  10. dos 教程(很全的)
  11. chrome启动参数
  12. 查看win10的产品密钥过期时间
  13. 全球2%高智商天才必测脑力题!却只有1%的人,能在5分钟内全部做对!
  14. 如何卸载手机系统自带应用(无需root)?【亲测有用】
  15. RxSwift系列—RxSwift核心逻辑
  16. 非常全面的贝叶斯网络介绍 非常多的例子说明
  17. 列表中使用bootstrap-switch开关
  18. c语言24小时制转化12,在C ++中将时间从24小时制转换为12小时制
  19. 快速搭建简单图床 - 远程访问本地搭建的EasyImage图床【内网穿透】
  20. 网络安全与渗透:文件上传漏洞,一文详解(十)此生无悔入华夏,男儿何不带吴钩

热门文章

  1. linux查看服务依赖关系,服务管理(1)
  2. mysql 连接 优化_(一)MySQL 连接优化
  3. linux查询数据库sql,SQL Server 跨数据库查询
  4. orcad快捷键_在orcad同一页面的连接关系应该怎么处理呢?
  5. 36岁自学python_Python语言基础
  6. apk解密工具_手机端操作| Auto.js一键解密/一键加密工具免费分享
  7. c# 可选参数与命名实参
  8. Github 开源:使用控制器操作 WinForm/WPF 控件( Sheng.Winform.Controls.Controller)
  9. 基本的try-cathc-finally异常处理
  10. 使用ARouter实现组件化