编写Makefile规则
一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个shell脚本一样,其中也可以执行操作系统的命令。
Makefile规则
目标:依赖.................................
tab键 命令
能够执行的条件:a、目标不存在 b、依赖已更新
这就是最基本的规则。
标通常是要生成的文件的名称,通常是可执行文件或目标文件,也可以是一个执行动作的名称,比如clean。
依赖是用来产生目标的材料,一个目标经常有几个依赖。命令是生成目标时执行的动作,一个规则可以包含有几条命令,每个命令占一行,注意每个命令前面必须有一个tab字符。
下面是一个简单的Makefile的编写。
hello:hello.c a.c
gcc -o hello hello.c a.c
也可以是下面的形式
hello:hello.o a.o
gcc -o hello hello.o a.o
hello.o:hello.c
gcc -o hell.o -c hello.c
a.o:a.c
gcc -o a.o -c a.c
以上的规则与第一个一样,这里-c表示是只编译不链接。
上面的规则还可以用通配符来表示
hello:hello.o a.o
gcc -o $@ $^
%.o:%.c
gcc -o $@ -c $
还可以执行相应的动作
hello:hello.o a.o
gcc -o $@ $^
%.o:%.c
gcc -o $@ -c $<
clean:
rm *.o hello
这是编写Makefike最简单的规则。
编写Makefile规则的更多相关文章
- makefile复习时发现的编写makefile规则注意事项
博客中关于makefile的博文数不胜数,比较经典的都很相似,下面这一片,很全面,只是很长,可以作为参考资料:http://blog.csdn.net/liang13664759/article/de ...
- 如何自己编写Makefile
如何自己编写Makefile 相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云.在日常学习和工作中,也有意无意的去回避makefile,能改就不写,能用ide就用 ...
- 如何编写makefile
一:Makefile介绍: Makefile是为自动化编译而生.我们写好makefile文件后,只需要一个make命令,就可以完成整个项目的编译工作,大大提高了开发效率. 也许刚开始学习编程时,你不会 ...
- 如何编写Makefile,一份由浅入深的Makefile全攻略
本文转载整理自陈浩大大的文章(跟我一起写 Makefile),由于原文内容庞大,故梳理出目录结构以便于学习及查阅参考. 一.概述 —— 什么是makefile?或许很多Winodws的程序员都不知道这 ...
- 如何编写makefile文件
最近一直在学习makefile是如何编写的. 当我们写的程序文件比较少的时候,敲入gcc /g++,当你在大型工程中,在一个个编译文件的话,你可能就会很郁闷.linux有一个自带的make ...
- Linux下编写 makefile 详细教程
原文地址: https://www.cnblogs.com/mfryf/p/3305778.html 近期在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到make ...
- 开始编写Makefile
1.Makefile 的编写规则一 目标列表:关联性列表 命令列表 目标列表:可以是多个以空格隔开多个目标文件 关联列表页称为先决条件:同样是用个或多个空格分开的目标文件 命令列表:用<tab& ...
- 为Go项目编写Makefile
为Go项目编写Makefile 借助Makefile我们在编译过程中不再需要每次手动输入编译的命令和编译的参数,可以极大简化项目编译过程. make介绍 make是一个构建自动化工具,会在当前目录下寻 ...
- 简单编写Makefile
相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云.在日常学习和工作中,也有意无意的去回避makefile,能改就不写,能用ide就用ide.其实makefile并没有 ...
随机推荐
- Oracle常用名词解释
好久没做rac,最近要做架构梳理,这里针对Oracle常用的名词缩写,这里做个记录,希望对大家有所帮助. RAC 全称是Real Application Cluster,oracle的高可用群集,即实 ...
- 使用UILabel实现滚动字幕移动效果
使用UILabel实现滚动字幕移动效果 这个链接中的代码也实现了这种效果 https://github.com/cbpowell/MarqueeLabel 最终效果如下: 原理如下: 1. 获取文本 ...
- map() Filter() lambda函数说明
map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回 #通过map()函数将list中的数字转换为字符 map(str,rang ...
- ab 压测工具使用
转自:http://www.cnblogs.com/lemtree/articles/1676641.html 就是APACHE自带的测试工具AB(apache benchmark).在APACHE的 ...
- python中的装饰
在面向对象(OOP)的设计模式中,decorator被称为装饰模式.OOP的装饰模式需要通过继承和组合来实现,而Python除了能支持OOP的decorator外,直接从语法层次支持decorator ...
- Mac上安装MongoDB
1.访问MongoDB官方下载地址 http://www.mongodb.org/downloads 2.点击“DOWNLOAD(tgz)”按钮: 3.将下载的文件压缩包解压后剪切到你的Mac中某个位 ...
- 【[SDOI2008]Sandy的卡片】
被\(mhr\)的暴力干翻了 这道题做法还是非常好想的 先做一遍差分,在每个串的某尾插入一个特殊字符,再将所有的串拼接在一起 现在的问题就转化为找到一个最长的公共子串使得其出现了\(n\)次,但是在一 ...
- [转]VC++获取文件大小集锦
方法一: WIN32_FIND_DATA fileInfo; HANDLE hFind; DWORD fileSize; const char *fileName = 文件的路径及名字; hFind ...
- 将宿主主机上的目录挂载到Docker中
docker run -it -v /home/zhouqun/文档/workplace:/var/www/html ubuntu64 /bin/bash 将宿主主机中/home/文档/workpla ...
- 客户端对象模型之列表数据导出到Excel
1,废话不多话,直接上代码,留着以后做类似功能时Copy一下!有需要的朋友也可以参考一下. <!DOCTYPE html> <html xmlns="http://www. ...