makefile书写规则

1 makefile 基本规则TARGET … : DEPENDENCIES …
  COMMAND
  …

 


·目标(TARGET)程序产生的文件,如可执行文件和目标文件;目标也可以是要执行的动作,如“clean”。
·依赖(DEPENDENCIES)是用来产生目标的输入文件,一个目标通常依赖于多个文件。
·命令(COMMAND)是make执行的动作,一个可以有多个命令,每个占一行。注意:每个命令行的起始字符必须为TAB字符!
·如果DEPENDENCIES中有一个或多个文件更新的话,COMMAND就要执行,这就是Makefile最核心的内容。
1.1 makefile使用伪目标.PHONY

1.2 makefile使用变量
1.2.1 makefile自动化变量

2 make自动推导·GNU的make很强大,它可以自动推导文件以及文件依赖关系后面的命令,于是我们就没必要去在每一个[.o]文件后都写上类似的命令,因为,我们的make会自动识别,并自己推导命令。   
·只要make看到一个[.o]文件,它就会自动的把[.c]文件加在依赖关系中,如果make找到一个whatever.o,那么 whatever.c,就会是whatever.o的依赖文件。并且 gcc -c whatever.c 也会被推导出来。


3 makefile通用版3.1 makefile中常见函数--wildcard函数
  当前目录下匹配模式的文件      例如:src=$(wildcard .c)
--notdir函数
  去除路径                      例如:$(notdir $src)
--patsubst函数
  模式匹配替换                例如:$(patsubst%.c,%.o,$src)
  等价于$(src:.c=.o)
--shell函数
  执行shell命令               例如:$(shell ls –d /)

3.2 多级目录makefile

这里有一个要注意的地方,用g++编译C++文件的话,用到的库必须是由g++编译生成的,否则链接不了。
关于g++和gcc,虽然说g++是用来编译.cpp,gcc是用来编译.c的,但是也不能说二者完全没有交叉。
事实上,两者都可以编译C和C++代码,但是:、
1)gcc把.c文件当做是C程序,而g++当做是C++程序;而对于.cpp文件,二者都会认为是C++程序
2)所以说,在编译阶段,g++会调用gcc,对于C++代码,二者是等价的,但是因为gcc命令不能自动和g++编译的库链接,所以,通常用g++来完成链接。
因此,为了方便起见,都用g++来编译我们的库文件。

ERP系统在国内,海外的员工每天都需要高频率的访问国内ERP,可以采用海外-国内的云加速海外专线,客户将ERP的IP或域名添加到海外某国-国内的加速线路中,并做Cname解析到加速域名,那么这个ERP在整个海外地区都被加速了。
最后附上一个我看到的文章http://m.blog.csdn.net/zhujianwei31415/article/details/50725569
,gcc与g++编译链接库文件的兼容性问题,有利于理解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值