Makefile

作者: k莫失莫忘 | 来源:发表于2019-07-25 09:41 被阅读0次

1. 基本语法

target ... : prerequisites ...
    command
    ...

target 可以是一个object file(目标文件),也可以是一个执行文件,还可以是一个标签(label)。对 于标签这种特性,在后续的“伪目标”章节中会有叙述。
prerequisites 生成该target所依赖的文件和/或target
command 该target要执行的命令(任意的shell命令)

2. Make是如何工作的

在默认的方式下,也就是我们只输入 make 命令。那么,

  1. make会在当前目录下找名字叫“Makefile”或“makefile”的文件。
  2. 如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个 文件,并把这个文件作为最终的目标文件。
  3. 如果edit文件不存在,或是edit所依赖的后面的 .o 文件的文件修改时间要比 edit 这个 文件新,那么,他就会执行后面所定义的命令来生成 edit 这个文件。
  4. 如果 edit 所依赖的 .o 文件也不存在,那么make会在当前文件中找目标为 .o 文件 的依赖性,如果找到则再根据那一个规则生成 .o 文件。(这有点像一个堆栈的过程)
  5. 当然,你的C文件和H文件是存在的啦,于是make会生成 .o 文件,然后再用 .o 文件生 成make的终极任务,也就是执行文件 edit 了。

3. Makefile选项CFLAGS,LDFLAGS,LIBS

原文链接

标签 含义
CFLAGSl 表示用于 C 编译器的选项 指定头文件(.h文件)的路径。如:CFLAGS=-I dir
CXXFLAGS 表示用于 C++ 编译器的选项
LDFLAGS 可以在里面指定库文件的位置 LDFLAGS=-Ldir1 -Ldir2
LIBS 告诉链接器要链接哪些库文件 LIBS = -lpthread -liconv

gcc编译器 CFLAGS 标志参数说明

后缀名 所对应的语言
-S 只是编译不汇编,生成汇编代码
-E 只进行预编译,不做其他处理
-g 在可执行程序中包含标准调试信息
-o file 把输出文件输出到file里
-v 打印出编译器内部编译各过程的命令行信息和编译器的版本
-I dir 在头文件的搜索路径列表中添加dir目录
-L dir 在库文件的搜索路径列表中添加dir目录
-static 链接静态库
-llibrary 连接名为library的库文件

4. 在makefile中设置环境变量

不知道 : )

好吧,搜索了很久,没找到可行的方法,先挖个坑。
因为程序中用到了getenv函数,所以固执地不用macro variable。
目前的方法是手动修改
如 $ export TMPFILE = tmp.txt

5.最简单的makefile

假设我只有一个main.c文件

test: main.o
   gcc -o test main.o
main.o: main.c
  gcc -c main.c
clean:
  rm main.o test

相关文章

  • 编写Makefile及简单分析

    makefile的好处:一次编写,终身受益 makefile的命名规则: makefile Makefile ma...

  • Makefile 工程管理

    Ⅰ Makefile的用途 Ⅱ Makefile的构成 Ⅲ Makefile构成-----规则 Ⅳ Makefil...

  • win_c/c++ mess01

    1. win makefile 1.1 win makefile,eg: 1.2 makefile explai...

  • [C] Makefile

    Makefile Blog [Makefile的简便写法] [Makefile]菜鸟教程 [gcc编译声明问题] ...

  • 迅为IMX6ULL开发板Ubuntu下C编程入门(二)

    本文是介绍3.3 初识 Makefile+3.4Makefile语法 3.3初识Makefile 3.3.1什么是...

  • Make

    make 目标 顶层 Makefile 作为入口, 来调用其他 makefile, 顶层 makefile 一般有...

  • Makefile学习笔记

    Makefile学习笔记 学习Makefile的资料 《跟我一起写makefile》 《GUN make manu...

  • Linux Kernel Makefiles特殊符号

    Makefile基本规则: Makefile文件中可使用特殊的符号简化Makefile文件的书写。 1、$@:表示...

  • makefile入门一

    Linux下Makefile详解 下面就来看如何写Makefile文件:Makefile文件编写规范: 下来看事例...

  • Makefile

    Makefile for boot Makefile Makefile对格式有要求:每一行文本除非顶头开始,如果需...

网友评论

      本文标题:Makefile

      本文链接:https://www.haomeiwen.com/subject/ntajmftx.html