makefile 高级功能

本文介绍了Makefile的一些实用技巧,包括指定编译文件、输出make过程信息、打印所有targets、多线程编译以及指定链接库类型等。还讨论了如何传递宏定义到编译过程中。

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

  • 指定编译文件

make -f mymakefile

这样可以make指定的文件。


  • 输出make过程信息

 加上-d选项,可以看到详细的make信息,方便debug。


  • 打印当前makefile中所有的targets

make -qp | awk -F':' '/^[a-zA-Z0-9][^$#\/\t=]*:([^=]|$)/ {split($1,A,/ /);for(i in A)print A[i]}'


  • 多线程编译

make -j thread_count

多个gcc并行编译,可以有效降低编译时间, 但是每次只能编译一个target,多了就会出错。

  • 指定链接库的类型

-Wl,-Bstatic -lxxx -Wl,-Bdynmic -lyyy

语法很简单,但是比较容易犯低级错误,

第一,Wl之后不能有空格,要紧跟参数

第二,    gcc还有很多默认的库没有写进去,会以你最后设置的static还是dynamic为准,调用后面的库


pass macro definitions 

make CFLAGS=-Dvar=42


总之 makefile的语法设计不是很好,总会产生一些很难查找的错误。最好还是用cmake,qmake之类的高级tool代替他们。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值