📂教程
🔖教程
2022-01-08 16:59阅读: 59评论: 0推荐: 0

简单使用Makefile

Makefile

介绍

  • Makefile 里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。
copy
  • 1
  • 2
  • 3
  • 4
  • 5
#--注释-- target ...: prerequisites ... command ... ...
  • target:可以是一个或多个目标文件、标签、执行文件。
  • prerequisites:生成该target所依赖的文件和/或target
    • 如果有一个以上的文件比target文件要新或者target不存在的话,command命令就会被执行。
  • command:该target要执行的命令(任意的shell命令)。

常用语法

  • 可以声明变量存储信息,简化命令。用$符使用该变量。
    copy
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    objects = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o edit : $(objects) cc -o edit $(objects) include foo.make *.mk $(bar) #引入其他makefile文件 .PHONY : clean #伪目标clean,避免和文件重名,只是一个标签 clean : -rm edit $(objects)
  • make 看到一个 .o 文件,它就会自动的把 .c 文件加在依赖关系。
    • 如果 make 找到一个 whatever.o ,那么 whatever.c 就会是 whatever.o 的依赖文件。并且 cc -c whatever.c 也会被推导出来。
  • rm命令前面加了一个小减号的意思就是,也许某些文件出现问题,但不要管,继续做后面的事
  • 如果make执行时,有-I--include-dir参数,那么在这个参数所指定的目录下去寻找文件。
  • 支持通配符* ? ~

  • 特殊变量VPATH,如果定义了这个变量,那么,make 就会在当前目录找不到的情况下,到所指定的目录中去找寻文件。
    • e.g. VPATH = src:../headers,用冒号分隔。
copy
  • 1
  • 2
bigoutput littleoutput : text.g generate text.g -$(subst output,,$@) > $@
  • $表示执行一个 Makefile 的函数,函数名为subst
  • $@ 表示目标的集合,就像一个数组

makefile的工作流程

  • 当只输入make命令时,会经历如下基本过程
    1. 会在当前目录下找名字叫“Makefile”或“makefile”的文件。
    2. 如果找到,读入包含文件,初始化文件中的变量,找文件中的第一个目标文件(target)。
    3. 如果第一个目标文件不存在或者比依赖项旧,则会执行后面的命令重新生成目标文件。
    4. 如果需要的依赖文件不存在,会寻找生成该文件的规则。

本文作者:oniisan

本文链接:https://www.cnblogs.com/oniisan/p/makefile.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Oniisan_Rui  阅读(59)  评论(0编辑  收藏  举报
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
点击右上角即可分享
微信分享提示