且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Makefile2

更新时间:2022-08-12 16:16:05

规范

  • 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. 执行生成命令。

相关阅读