自学内容网 自学内容网

C语言之MakeFile

Makefile 的引入是为解决多文件项目中手动编译繁琐易错、缺乏自动化构建、项目管理维护困难以及跨平台构建不便等问题,实现自动化、规范化的项目构建与管理

MakeFile

简单的来说,MakeFile就是编写编译命令的文件

文件编写格式

目标:依赖文件列表

<Tab>命令列表

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

2,依赖文件:是用来输入从而产生目标文件,一个目标通常有几个依赖文件(也可以没有)

3,命令:make执行的动作,一个规则可以含几个命令(也可以没有);有多个命令是,每个命令占一行

如:

        main:main.c

                gcc main.c -o main
        clear:
                rm main
注意:
        当目标后没有依赖文件,我们将其称之为假想目标

变量

系统变量

由系统提供的变量

        make工具会拷贝系统的环境变量并将其设置为makefile的变量,在makefile中可直接读取或修改拷贝后的变量

查看系统变量命令:

        env

修改或添加系统变量

        export 变量名=值

        注意:

                export是导入的意思

注意:

        只是临时修改,当dos关闭后,将不存在

如:makefile编写如下

        main:make.o myutils.o

                gcc main.o myutils.o -o main

     clear:

               rm main *.o

      myprint:

                echo ${PWD}   

*.o 是一个通配符表达式,表示要删除当前目录下所有后缀为 .o 的目标文件

echo 是用于在终端打印输出内容的命令,${PWD} 是一个环境变量引用(在类 Unix 系统中,PWD 表示当前工作目录,即 “Present Working Directory”),所以当执行这个 myprint 目标对应的命令时,会在终端打印出当前所在的工作目录路径信息。

自定义变量:程序员在编写makefile文件中自定义的变量

预定义变量:make命令提供的变量

自定义变量

定义: 变量名=变量值

使用:

        取值;${变量名}或$(变量名)

        拼接:变量名+=值

注意:

        1,makefile变量名可以以数字开头

        2,变量的大小是敏感的

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

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

预定义变量

makefile 中有许多预定义变量,这些变量具有特殊的含义,可在 makefile 中直接使
用。
        $@ 目标名
        $< 依赖文件列表中的第一个文件
        $^ 依赖文件列表中除去重复文件的部分
        AR 归档维护程序的程序名,默认值为 ar
        ARFLAGS 归档维护程序的选项
        AS 汇编程序的名称,默认值为 as
        ASFLAGS 汇编程序的选项
        CC C 编译器的名称,默认值为 gcc
        CFLAGS C 编译器的选项
        CPP C 预编译器的名称,默认值为 $(CC) -E
        CPPFLAGS C 预编译的选项
        CXX C++编译器的名称,默认值为 g++
        CXXFLAGS C++编译器的选项

 编写模板

EXEC = 可执行文件名

OBJ = 二进制文件名列表

FLAG = -wall -g


$(EXEC):$(OBJ)

        $(CC) $(OBJ) -o $(EXEC) $(-wall -g)

二进制文件名1.o:源文件名1.c

        $(CC) -c 源文件名.c -o 二进制文件名.o

二进制文件名2.o:源文件名2.c

        $(CC) -c 源文件名.c -o 二进制文件名.o

clear:
        rm $(EXEC) *.o

注意:源文件名与二进制文件名相同

make命令

解析makefile文件的命令

检查make命令是否存在

        which make

        或

        make --version

GNU Make名词

GNU make 是一种代码维护工具, make 工具会根据 makefile 文件定义的规则和步
骤,完成整个软件项目的代码维护工作
        优点:
                1、管理我们的源文件
                2、会检查每个源文件是否被修改 只会再次只编译修改过的源文件(提高编译效
率)
        缺点:
                makefile文件: Window 上的集成开发环境下,会自动生成, 在 Linux 下需要手
动编写。
使用
语法 :
        make 目标
        注意: 目标可以没有 , 默认执行第一个目标
注意:
        1、 make 默认在工作目录中寻找名为 GNUmakefile makefile Makefile 的文件作为 makefile 输入文件
        2、 -f 可以指定以上名字以外的文件作为 makefile 输入文件
        3、若使用 make 命令时没有指定目标,则 make 工具默认会实现 makefile 文件内的第一个目标,然后退出。
: 在控制台输入
        1,输入 make, 默认执行 makefile 文件中第一个目标中命令
        2,输入 make 目标 , 执行 makefile 文件中指定的目标中的命令
        3,当 makefile 的文件名不是 GNUmakefile makefile Makefile , 可以输入make -f 文件名 , makefile 文件


原文地址:https://blog.csdn.net/m0_75253775/article/details/143806382

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!