makefile 高级功能

  • 指定编译文件

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代替他们。


你可能感兴趣的:(makefile 高级功能)