makefile介绍

  makefile的功能是管理源文件的编译链接,在makefile我们可以定义一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。具体可以参考:

  http://blog.csdn.net/ruglcc/article/details/7814546/

  http://www.cnblogs.com/liangxiaxu/archive/2012/07/31/2617384.html

makefile规则

target1: prerequisites1,prerequisites2,...
command1
target2: prerequisites1,prerequisites2,...
command2
...

     target: 一个目标文件,可以是Object File,也可以是执行文件。

   prerequisites: 要生成那个target所需要的文件或是目标。

   command: 也就是make需要执行的命令,可以是任意的shell命令

makefile举例
  一、这里以一个简单的C程序作为例子,在一个文件夹下有下列的文件:

    1、make.exe
     这是一个可以执行makefile的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。
    2、main.c

 #include<stdio.h>
int main(){
printf("Hello World!\n");
}

    3、makefile

test: main.o
gcc -o test main.o
main.o:main.c
gcc -c -o main.o main.c
clean:
del test.exe main.o

  二、我们在此目录下打开shell窗口,输入“make“,enter,就可看见make已经在进行编译,在此文件目录下多了:

    1、main.o

    2、test.exe

        其实在编译时,make是根据makefile文件进行编译的。首先要编译test,而又找不到main.o,于是就会先编译main.o。编译main.o时先找到编译所需的main.c,然后再执行"gcc -c -o main.o main.c"语句生成main.o,此时test所需的文件已生成了,于是执行"gcc -o test main.o"生成test.exe。

    我们也可以在shell中输入”make clean“在执行clean,此时的test.exe 和main.o 就会被删除。

    //End

最新文章

  1. [译]MVC网站教程(一):多语言网站框架
  2. [.net 面向对象程序设计深入](0) 开篇
  3. 使用python selenium webdriver模拟浏览器
  4. mysql之各种命令总结
  5. css3制作惊艳hover切换效果
  6. ArcGIS快捷键导出
  7. andriod 带看括弧的计算器
  8. Python标准库之Sys模块使用详解
  9. Yii2查询语句使用不等于号
  10. artDialog的几种基本使用
  11. go之匿名字段
  12. C/C++数据对齐汇总
  13. 老李推荐:第2章3节《MonkeyRunner源码剖析》了解你的测试对象: NotePad窗口Activity之NoteEditor简介
  14. 使用CSharp编写Google Protobuf插件
  15. angularjs 水平滚动选中按钮高亮显示 swiper和回到顶部指令的实现ionic
  16. 【Node.js】二、基于Express框架 + 连接MongoDB + 写后端接口
  17. day 7-6 GIL,死锁,递归锁与信号量,Event,queue,
  18. 【推荐】使用Ultrapico Expresso学习正则表达式
  19. day1 diff命令递归比较目录下的文件
  20. python实现用户登陆(sqlite数据库存储用户信息)

热门文章

  1. webgl巧妙方式写着色器代码
  2. 新建structs2 web应用及structs.xml常用基础配置
  3. ActiveMQ笔记(4):搭建Broker集群(cluster)
  4. [LeetCode] Delete Node in a BST 删除二叉搜索树中的节点
  5. eclipse环境搭建
  6. java 导出word 并下载
  7. iOS学习-UIButton的imageView和titleLabel
  8. [翻译] V8引擎的解析
  9. WebAPI IIS PUT和DELETE请求失败 405
  10. 织梦DedeCMS