浅析C语言中的MakeFile(主用于Linux操作系统)

一、首先是make命令:

        make是一个命令,当用户输入make命令,系统会自动寻找makefile、Makefile、GNUmakefile等其中的任何一个,根据该文件中的指令编译工程。

makefile是一个编译指令的脚本,记录了一条条编译方式;可以简化编译程序的时候输入的命令,编译的时候只需要输入make命令;可以节省编译时间,提高编译效率。

二、makefile的语法规则

大体框架

目标:依赖文件列表

<Tab>命令列表

目标文件依赖“依赖文件列表”,而命令列表是具体将“依赖文件列表”生成“目标文件”的具体指令。

用户在终端上输入make指令,自动寻找makefile,只会执行makefile中第一条“目标:依赖文件列表”

main:main.c fun.c
    gcc main.c fun.c -o main

make命令格式

make -f 用户指定的文件名

make 后跟其他目标,这样可以执行其他目标

三、makefile实例

main:main.o fun.o
    gcc main.o fun.o -o main
main.o:main.c
    gcc -c main.c -o main.o
fun.o:fun.c
    gcc -c fun.c -o fun.o
clean:
    rm main *.o

四、makefile中的变量

1、自定义变量:用户自己定义的变量

makefile的变量名:makefile的变量名可以以数字开头

        注意:

                a、变量是大小写敏感的;

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

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

变量名=变量值

如果需要读取变量的值,必须给“钱”,而且还是"美元".num=10 $num才是取变量的值

2、系统环境变量

make工具会拷贝

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

#export test=10 export导出环境变量

#make clean

#echo $test

3、预定义变量(makefile定义好的变量)

$@ 目标名

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

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

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

ARFLAGS 归档维护程序的选项

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

ASFLAGS 汇编程序的选项

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

CFLAGS C 编译器的选项

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

CPPFLAGS C 预编译的选项

CXX C++编译器的名称,默认值为 g++

CXXFLAGS C++编译器的选项

高级的makefile,下面是对上述makefile文件的简化:
 

CC=gcc
EXEC=main
OBJ=main.o fun.o

$(EXEC):$(OBJ)
    $(CC) $^ -o $@
%.o:%.c
    $(CC) -c $< -o $@

clean:
    rm $(EXEC) $(OBJ)

五、最重要的一点

如果makefile文件的内容是从别处复制,编译运行时报错,可尝试将缩进处前方删除后重新<Tab>尝试,因为有的地方缩进方式是空格,不合语法规则。


博主还在学习中,若有不对请及时指出,谢谢!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞翔的杨先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值