Makefile

本文介绍了Makefile的基本格式,包括.PHONY的作用,它可作为伪目标避免因文件名冲突导致命令不执行;还阐述了Makefile中的变量,如CC、CFLAGS等;自动变量,如$@、$<等;以及特殊命令字需使用规定的替代变量名,让编译更顺畅。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本格式:

target: depend
[tab] command

.PHONY的作用:

  • .PHONY被用来作为伪目标。
  • 使用目的:当类似clean这样的target关键字作为target并且没有依赖文件时,假如目录下有一个文件也叫clean时,make clean命令则会以为我想编clean这个目标文件,恰好clean文件又不会比依赖文件更旧,所以下面的command就不会被执行。
  • .PHONY作为target,clean作为依赖。这就是告诉make,clean它是一个target,而不是一个普通的文件。

makefile中的变量:

  • CC来代替具体的编译器,例如:CC=g++
  • CFLAGS来代替C语言编译选项,例如:CFLAGS=-c
  • -Wall;还会指定头文件include路径,例如:CFLAGS+=-I/usr/include
  • LDFLAGS来指定库文件lib路径,例如:LDFLAGS+=-L/usr/lib
  • LDLIBS来指定要链接的库名称,例如:LDLIBS+=-llibname
  • 整体示例:  $(cc) $(CFLAGS) $(LDFLAGS) $(LDLIBS) main.cpp

makefile中的自动变量:

  • 当我们使用通配符方法来写target和depend的时候,用上自动变量会更简单一些,也会让编译更顺畅。
  • $@ : target文件名
  • $< : 第一个depend文件
  • $? : 所有比target文件更新的depend文件
  • $^ : 所有的depend文件,不管文件修改时间如何

特殊的命令字:

     如果要在makefile中使用下面这些系统命令:

     ar bison cc flex install ld ldconfig lex make makeinfo ranlib texi2dvi yacc

    需要使用makefile规定的替代变量名:

    $(AR) $(BISON) $(CC) $(FLEX) $(INSTALL) $(LD) $(LDCONFIG) $(LEX)$(MAKE) $(MAKEINFO) $(RANLIB) $(TEXI2DVI) $(YACC)

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

雲烟

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

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

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

打赏作者

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

抵扣说明:

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

余额充值