规范

  • target可以是Object file, 可执行文件或者标签(标签一般没有依赖)
  • 越靠近最终结果的target卸载越前面
  • 定义target前, 定义CC, SRC, CFLAGS, OBJS, INCLUDES, RM, COPY等变量方便修改
  • 在以前使用gcc编译时, 一般直接使用gcc编程链接成可执行文件, 但是在makefile中.o后缀的Object file非常重要, 需要生成OBJ = main.o test1.o test2.o
  • 每一个makefile文件在最后应该定义一个clean标签, 用于清理编译生成的文件, 这是定义的变量就方便了许多, 在clean标签中使用-rm -rf $(OBJS), 其中rm之前的横线是说可能rm执行时会有错到那时不用理会
  • makefile中可以自动推导出.c与.o的依赖关系, 如果target是.o文件, makefile最自动加上.c的依赖并执行一个从.c --> .o的命令

Makefile工作流程(Copy From Others)

  1. 读入所有的Makefile。
  2. 读入被include的其它Makefile。
  3. 初始化文件中的变量。
  4. 推导隐晦规则,并分析所有规则。
  5. 为所有的目标文件创建依赖关系链。
  6. 根据依赖关系,决定哪些目标要重新生成。
  7. 执行生成命令。

最新文章

  1. 以实际的WebGIS例子探讨Nginx的简单配置
  2. nodeJs中创建服务器
  3. 孙鑫MFC学习笔记9:状态栏与工具栏编程
  4. sdut 2498【aoe 网上的关键路径】
  5. springJDBC一对多关系,以及Java递归,jsp递归的实现
  6. wpf 面试题目
  7. iOS 进入后台的处理
  8. Linux中Kill进程的N种方法
  9. Gradle 1.12 翻译——第十四章. 教程 - 杂七杂八
  10. GCD其他实用场景
  11. Codeforces 32E Hide-and-Seek 乞讨2关于镜面反射点 计算几何
  12. SVN的具体使用方法介绍(安装以及操作)
  13. 《Linux命令行与shell脚本编程大全》第九章 安装软件程序
  14. 一.初识java
  15. Flask Session 详解
  16. Spring中Bean的生命周期及其扩展点
  17. [android] xml文件的序列化
  18. JNI NDK (AndroidStudio+CMake )实现C C++调用Java代码流程
  19. Python学习(十四) —— 并发编程
  20. PAT 甲级 1044 Shopping in Mars

热门文章

  1. mysql在linux下的安装与优化
  2. [hdu 2089] 不要62 数位dp|dfs 入门
  3. vuejs API总结
  4. wamp配置apache虚拟主机支持多域名访问localhost
  5. P2866 [USACO06NOV]糟糕的一天Bad Hair Day
  6. html5 语音识别 转
  7. DJ 算法的队列优先优化
  8. 江西财经大学第一届程序设计竞赛 D
  9. python3 提取http请求response中的某个值
  10. java——Class、动态加载