- 指定编译文件
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代替他们。