Ubuntu下用glade和GTK+开发C语言界面程序(三)——学习make的使用方法
makefile的规则
target ... : prerequisites ...command......
target能够是一个object file(目标文件),也能够是一个运行文件,还能够是一个label。
(随意的shell命令)
这当中的主要意思就是,prerequisites中假设有一个以上的文件比target文件要新的话,command所定义的命令就会被运行。这就是makefile中最核心的内容。
一个简单的演示样例
edit : main.o kbd.o command.o display.o \insert.o search.o files.o utils.occ -o edit main.o kbd.o command.o display.o \insert.o search.o files.o utils.omain.o : main.c defs.hcc -c main.c
kbd.o : kbd.c defs.h command.hcc -c kbd.c
command.o : command.c defs.h command.hcc -c command.c
display.o : display.c defs.h buffer.hcc -c display.c
insert.o : insert.c defs.h buffer.hcc -c insert.c
search.o : search.c defs.h buffer.hcc -c search.c
files.o : files.c defs.h buffer.h command.hcc -c files.c
utils.o : utils.c defs.hcc -c utils.c
clean :rm edit main.o kbd.o command.o display.o \insert.o search.o files.o utils.o
将上面内容保存为文件名称为“makefile”或者“Makefile”的文件里。直接到命令行中进入这个文件的文件夹中,运行make命令。就可以生成所须要的可运行文件edit,假设要删除运行文件和全部的中间文件,一个简单的make clean 命令就可以。
make的工作方式
makefile中使用变量
objects = main.o kbd.o command.o display.o \insert.o search.o files.o utils.o
那么我们在makefile中就能够以"$(objects)"的方式来使用这个变量了。于是makefile就能够改为以下的方式:
objects = main.o kbd.o command.o display.o \insert.o search.o files.o utils.oedit : $(objects)cc -o edit $(objects)
main.o : main.c defs.hcc -c main.c
kbd.o : kbd.c defs.h command.hcc -c kbd.c
command.o : command.c defs.h command.hcc -c command.c
display.o : display.c defs.h buffer.hcc -c display.c
insert.o : insert.c defs.h buffer.hcc -c insert.c
search.o : search.c defs.h buffer.hcc -c search.c
files.o : files.c defs.h buffer.h command.hcc -c files.c
utils.o : utils.c defs.hcc -c utils.c
clean :rm edit $(objects)
这样我们改动[.o]文件的时候仅仅须要简单的在变量objects中改动就能够了。
清空文件目标的规则
clean:rm edit $(objects)
更稳健的方式例如以下:
.PHONY : clean
clean :-rm edit $(objects)
.PHONY意思表示clean是一个"伪目标"。
在rm命令前面加了一个减号的意思为。或许某些文件出现故障。但不用管,继续做后面的事。当然。clean规则一般都是放在makefile的文件的最后。这也是个不成文的规则。
Ubuntu下用glade和GTK+开发C语言界面程序(三)——学习make的使用方法相关推荐
- c语言和gtk实现的游戏,Ubuntu下用glade和GTK+开发C语言界面程序(一)
前言:对于大学中计算机系的每年暑假的课设有太多想说的,能从中学到非常多东西,当然不排除打酱油的,这些能够掠过哦,凡事都打酱油.人生也是打酱油的吧. 2333. 对于大三曾经的课设一般的要求都是用C写的 ...
- linux 搭建开发stm32 stlink,Ubuntu下搭建stm32+stlink的开发环境
Ubuntu下搭建stm32+stlink的开发环境 热度 3已有 15960 次阅读2014-8-19 21:09 | 上周因为忙于别的事情,很久没切到ubuntu下了,这周继续弄了弄. 弄到了一些 ...
- 在Ubuntu下构建Bullet以及执行Bullet的样例程序
在Ubuntu下构建Bullet以及执行Bullet的样例程序 1.找到Bullet的下载页,地址是:https://code.google.com/p/bullet/downloads/list 2 ...
- ubuntu下连接mysql出现Access denied for user ‘rose‘@‘localhost‘ (using password: NO)的解决方法
ubuntu下连接mysql出现Access denied for user 'rose'@'localhost' (using password: NO)的解决方法 参考文章: (1)ubuntu下 ...
- VC开发多语言界面支持的简单方法
VC开发多语言界面支持的简单方法 作者:成晓旭 (需要完整源代码请留言) 最近在做一个小程序,要求实现对多语言界面显示支持功能,并且,界面显示内容用户能够自己设置. 初步设计用INI文件来配置显示内容 ...
- 在Ubuntu下使用QEMU搭建arm开发环境(三)使用u-boot加载Linux内核
嵌入式启动概述 嵌入式boot loader 功能类似于PC的BIOS.硬件检测是否正常 加载操作系统镜像到RAM 设置不同的启动方式 常见的启动方式 NOR/NAND flash启动 从SD卡启动 ...
- 怎么开发Linux图形界面程序,Linux下的图形界面编程
Linux下的图形界面编程 一.Qt和GTK+ 虽然Linux下的大多数开发是基于字符界面的,但在Linux环境下也可以开发出美观大方的图形界面.经过多年的发展,目前已经存在多种用于在Linux下开发 ...
- ubuntu下,py2,py3共存,/usr/bin/python: No module named virtualenvwrapper错误解决方法
2019独角兽企业重金招聘Python工程师标准>>> ubuntu下,py2,py3共存 运行virtualenvwrapper会报错如下: /usr/bin/python: No ...
- ubuntu下firefox中,直接在网页上安装程序的方法
我不知道别人是怎么做的,反正这个问题恶心死了. ubuntu下安装软件,一般都是gogole到一个页面,然后上面告诉你把下面的代码输入到ternimal. sudo apt-add-repositor ...
- 麻雀虽小,五脏俱全——由C语言小程序深入学习软件工程和设计开发规范
苏思畅 - 原创作品转载请注明出处 - <软件工程(C编码实践篇)>MOOC课程 http://mooc.study.163.com/course/USTC-1000002006 一.课程 ...
最新文章
- 二叉树中第二小的节点
- C#中DataTable的一些用法
- c语言n位水仙花数简书,Kotlin中函数式编程API(8)求阶乘和计算水仙花数
- 你必须知道的 SmartSql
- 深度ip转换器手机版app_手机大师智能管家app下载-手机大师智能管家app官网版 v1.0.0...
- 用更少的钱看更清晰的视频——详谈阿里云窄带高清
- paip.silverlight设计器载入异常NullReferenceException问题。
- SQL注入漏洞 攻击
- VMware-分配 vSphere 5.0 许可证密钥
- 金蝶K3-航天信息税控发票开票软件接口程序
- 全球首个用户分享区块链+AI大数据体系,专业跨境医疗机构“海医通”发布XMC“海医链”
- Django - 模型层 - 关系类型字段
- 一对一视频聊天app源码,归并排序模板
- 大机构里站队忙——北漂18年(22)
- 聚类kmeans案例
- apfs扩容_如何在MacOS High Sierra上调整APFS容器的大小
- Google AIY人工智能套件,让STEM教育更加生动有趣!
- 目前 计算速度最快的计算机系统是,目前计算机执行最快速度是多少
- 不能一帆风顺,那就乘风破浪
- 西北大学和西电计算机考研,第四所一流大学?西北大学获得陕西省支持,那么西电呢?...