自动化Build的方法如下所示
#本文件自动进行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的方法如下所示相关推荐
- python wait_window_pywinauto客户端自动化---窗口等待方法
我们在做web和app的ui自动化过程中,常用到等待机制,那客户端自动化有这个方法吗?python这么强大,肯定是有方法解决的 等待机制 pywinauto等待有两种方法: 方法一: wait() w ...
- Java自动部署maven_Maven+Tomcat8 实现自动化部署的方法
本文介绍了maven+tomcat8 实现自动化部署的方法,分享给大家,具体如下: 1.配置tomcat-users.xml 首先在tomcat里配置deploy的用户(tomcat根目录/conf/ ...
- router vue 多个路径_多个vue子路由文件自动化合并的方法,
多个vue子路由文件自动化合并的方法, 1. 目录结构 废话不多说,直接上图. 目录结构,如下图所示 2. 代码编写位置 在router目录下面的index.js文件中写入以下代码 import Vu ...
- selenium自动化测试_维持Selenium测试自动化的完美方法
selenium自动化测试 毫无疑问, 自动浏览器测试已改变了软件开发的工作方式. 如果不是Selenium,我们将无法像我们一样使用各种各样的无错误的Web应用程序. 但是有时,甚至IT部门也误解了 ...
- 维持硒测试自动化的完美方法
毫无疑问, 自动浏览器测试已经改变了软件开发的工作方式. 如果不是Selenium,我们将无法像我们一样使用各种各样的无错误Web应用程序. 但是有时,甚至IT部门也误解了自动化一词. 大多数人认为计 ...
- python3使用staf问题_python调用staf自动化框架的方法
1.配置环境 支持python2和python3 On Linux, Solaris, or FreeBSD, add the /usr/local/staf/lib directory to you ...
- pyautogui桌面自动化基础使用方法
pyautogui桌面自动化基础使用方法 PyAutoGUI通过接管鼠标.键盘使用权,基本上模拟真人操作,可以解放人重复操作的行为. 1. 获取基础信息 1.1 屏幕信息 获取屏幕尺寸(分辨率×分辨率 ...
- c2665 “initgraph”: 2 个重载中没有一个可以转换所有参数类型_一个使用延迟候选项生成的用于自动化程序修复方法的工具...
论文:Jinru Hua, Mengshi Zhang, Kaiyuan Wang, and Sarfraz Khurshid. 2018. SketchFix: A Tool for Automat ...
- Android自动化的一般方法
1 背景 https://mp.weixin.qq.com/s/B7o3JSkYI_9c4RivatsZKQ Android自动化包含自动化测试和第三方App的自动化运行,这里的自动化测试主要指的是纯 ...
最新文章
- validate插件深入学习-01 小白从看透一个插件开始
- 递归删除N天前的文件夹及子文件夹下的特定文件
- eclipse 设置 默认编码为 utf-8
- redis——持久化
- Flex 中 12 个简单实用的小技巧
- 【渝粤教育】广东开放大学 建筑设备 形成性考核 (33)
- Android使用adb命令查看CPU信息
- Cache和DMA一致性 iCache和dCache一致性
- 《研磨设计模式》builder生成器模式(golang)
- dos 教程(很全的)
- chrome启动参数
- 查看win10的产品密钥过期时间
- 全球2%高智商天才必测脑力题!却只有1%的人,能在5分钟内全部做对!
- 如何卸载手机系统自带应用(无需root)?【亲测有用】
- RxSwift系列—RxSwift核心逻辑
- 非常全面的贝叶斯网络介绍 非常多的例子说明
- 列表中使用bootstrap-switch开关
- c语言24小时制转化12,在C ++中将时间从24小时制转换为12小时制
- 快速搭建简单图床 - 远程访问本地搭建的EasyImage图床【内网穿透】
- 网络安全与渗透:文件上传漏洞,一文详解(十)此生无悔入华夏,男儿何不带吴钩
热门文章
- linux查看服务依赖关系,服务管理(1)
- mysql 连接 优化_(一)MySQL 连接优化
- linux查询数据库sql,SQL Server 跨数据库查询
- orcad快捷键_在orcad同一页面的连接关系应该怎么处理呢?
- 36岁自学python_Python语言基础
- apk解密工具_手机端操作| Auto.js一键解密/一键加密工具免费分享
- c# 可选参数与命名实参
- Github 开源:使用控制器操作 WinForm/WPF 控件( Sheng.Winform.Controls.Controller)
- 基本的try-cathc-finally异常处理
- 使用ARouter实现组件化