Makefile学习笔记

Makefile文件        makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。Makefile性质:shell脚本性质,可以执行操作系统的命令Makefile格式:目标 ...:依赖 ... 命令 命令 ... ...目标:可以是object文件,也可以...
摘要由CSDN通过智能技术生成

Makefile文件

        makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。

Makefile性质:shell脚本性质,可以执行操作系统的命令

Makefile格式:

目标 ...:依赖 ...
    命令
    命令
    ...
    ...
  • 目标:可以是object文件,也可以是可执行文件
  • 依赖:生成目标所需要的文件
  • 命令:make需要执行的命令(任意的shell命令),Makefile中的命令必须以 [tab] 开头

PRO_DIR = $(shell cd .. && pwd)解释

首先执行cd ..,如果这条命令执行成功,则执行pwd命令,最后将运行的结果赋值为PRO_DIR

CC = $(CROSS_COMPILE)gcc

        定义要使用的编译器,非交叉编译的场合,CROSS_COMPILE为空,所以使用的就是gcc,交叉编译时(如在X86 PC上编译在ARM上运行的软件),CROSS_COMPILE会定义为类似于arm_linux_gnu_的值,这时会使用交叉编译器(如arm_linux_gnu_gcc)。

Makefile中的ifeq,ifneq,ifdef

  1. ifeq($(ABC), XX)表示变量ABC的值与XX相同则表示真,其中格式如下
    ifeq($(A), X)
    
    FLAG += -Debug
    
    endif
  2. ifeq($(ABC), XX)表示变量ABC的值与XX不相同则表示真

  3. ifdef 只是测试一个变量是否有值,不会对变量进行改变。如果该变量有值,则表示真;该变量为空,则表示假。
    注:对于变量“name”,定义的时候为“name=”,则ifdef判断为假。但是如果有“name=”和“sum=$(name)”,则ifdef判断sum为真,如下所示,第一个返回yes,第二个返回no

    例1: 
    bar = 
    foo = $(bar) 
    ifdef foo 
    frobozz = yes 
    else 
    frobozz = no 
    endif 
     
    例 2: 
    foo = 
    ifdef foo 
    frobozz = yes 
    else 
    frobozz = no 
    endif 

     

Makefile中的CFLAGS

        CFLAGS是一个变量没有具体含义,是个通用的约定,通过这个变量告诉编译器开发者所选择的编译选项。某些地方写作EXTRA_CFLAGS,案例如下

EXTRA_CFLAGS += -O0 -g3 -Wall $(D_PRINT) -c -fmessage-length=0

其中-O0表示

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值