make命令

1. 什么是make?

make是个命令,是个可执行程序,用来解析Makefile文件的命令这个命令存放在 /usr/bin/

2. 什么是makefile?

makefile 是个文件,这个文件中描述了咱们程序的编译规则咱们执行make命令的时候,make命令会在当前目录下找makefile文件,根据makefile文件里的规则,编译咱们的程序。

注意:Makefile规则文件是咱们程序员根据自己的程序,编写的编译规则

3. 采用Makefile的好处

3.1 简化编译程序的时候输入得命令,编译的时候只需要敲make命令就可以了

3.2 可以节省编译时间,提高编译效率

4. GNU make是一种代码维护工具

4.1 make工具会根据makefile文件定义的规则和步骤,完成整个软件项目的代码维护工作。

4.2 一般用来简化编译工作,可以极大地提高软件开发的效率。

4.3 windows下一般由集成开发环境自动生成

4.4 linux下需要由我们按照其语法自己编写

5. make主要解决两个问题

5.1 问题一:大量代码的关系维护

5.1.1 大项目中源代码比较多,手工维护、编译时间长而且编译命令复杂,难以记忆及维护

5.1.2 把代码维护命令及编译命令写在makefile文件中,然后再用make工具解析此文件自动执行相应命令,可实现代码的合理编译

5.2 问题二:减少重复编译时间

在改动其中一个文件的时候,能判断哪些文件被修改过,可以只对该文件进行重新编译,然后重新链接所有的目标文件,节省编译时间

6. makefile语法规则

目标:依赖文件列表

<Tab命令列表

目标:通常是要产生的文件名称,目标可以是可执行文件或其它obj文件,也可是一个动作的名称

依赖文件:是用来输入从而产生目标的文件

一个目标通常有几个依赖文件(可以没有)

命令:make执行的动作,一个规则可以含几个命令(可以没有)      

有多个命令时,每个命令占一行

7. make命令格式

make [ f file ]   [ targets ]

7.1 [ -f file ]

make默认在工作目录中寻找名为GNUmakefile、makefile、Makefile的文件作为

makefile输入文件,-f 可以指定以上名字以外的文件作为makefile输入文件

7.2 [ targets ]

若使用make命令时没有指定目标,则make工具默认会实现makefile文件内的第一个目标,然后退出,指定了make工具要实现的目标,目标可以是一个或多个(多个目标间用空格隔开)。

7.3 一般使用的时候:直接make就可以

7.4 假想目标

前面makefile中出现的文件称之为假想目标

假想目标并不是一个真正的文件名,通常是一个目标集合或者动作可以没有依赖或者命令一般需要显示的使用make + 名字,显示调用,运行时使用make clean 就会执行clean后面的命令

all:exec1 exec2

    clean:

<Tab>rm *.o exec

8. makefile变量

8.1 makefile变量概述

makefile变量类似于C语言中的宏,当makefile被make工具解析时,其中的变量会被展开。

8.2 变量的作用

保存文件名列表

保存文件目录列表

保存编译器名

保存编译参数

保存编译的输出

8.3 变量的分类
8.3.1 自定义变量

在makefile文件中定义的变量。

make工具传给makefile的变量。

8.3.2 系统环境变量

make工具解析makefile前,读取系统环境变量并设置为makefile的变量。

8.3.3 预定义变量(自动变量)

9. 自定义变量语法

9.1 定义变量

变量名=变量值(等号两边不可加空格)

9.2 引用变量

$(变量名)或${变量名}

9.3 注意

makefile变量名可以以数字开头

变量是大小写敏感的

变量一般都在makefile的头部定义

变量几乎可在makefile的任何地方使用

 10. 预定义变量

makefile中有许多预定义变量,这些变量具有特殊的含义,可在makefile中直接使用

$@         

目标名

$<          

依赖文件列表中的第一个文件

$^        

依赖文件列表中除去重复文件的部分

AR          

归档维护程序的程序名,默认值为ar

ARFLAGS 

归档维护程序的选项

AS          

汇编程序的名称,默认值为as

ASFLAGS 

汇编程序的选项

CC          

C编译器的名称,默认值为cc

CFLAGS  

C编译器的选项

CPP        

C预编译器的名称,默认值为$(CC) -E

CPPFLAGS         

C预编译的选项
    CXX  C++编译器的名称

CXXFLAGS     

C++编译器的选项

相关推荐

  1. make命令

    2024-04-26 19:24:01       11 阅读
  2. make命令简介

    2024-04-26 19:24:01       15 阅读
  3. Android make命令简述

    2024-04-26 19:24:01       11 阅读
  4. Linux命令详解./configure、makemake install 命令学习

    2024-04-26 19:24:01       37 阅读
  5. mace | ubuntu编译mace

    2024-04-26 19:24:01       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-26 19:24:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-26 19:24:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-26 19:24:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-26 19:24:01       20 阅读

热门阅读

  1. 大华相机C#学习之IStream类

    2024-04-26 19:24:01       16 阅读
  2. mybatis - 取值符号:# 和 $的区别

    2024-04-26 19:24:01       16 阅读
  3. 【动态规划】Leetcode 322. 零钱兑换【中等】

    2024-04-26 19:24:01       9 阅读
  4. 代谢网络模型学习笔记(序章)

    2024-04-26 19:24:01       12 阅读
  5. 设计模式之单例模式

    2024-04-26 19:24:01       15 阅读
  6. System.Exception有哪些类型分别什么意思

    2024-04-26 19:24:01       16 阅读
  7. 1.mysql--常用sql(2)

    2024-04-26 19:24:01       11 阅读
  8. 【C++刷题】优选算法——动态规划第五辑

    2024-04-26 19:24:01       14 阅读