写了一段时间的Makefile,编译linux下的C/C++代码,现在对我所使用的一些Makefile的配置作一个总结说明。
首先先贴一段本人常用的Makefile模版,然后对此Makefile进行总结说明。
代码如下:
总结:
1、ifneq
else
endif
的使用。
(见代码8-16行)
2、目标文件输出到指定目录:
bindir=./bin
(见代码18-19行)
3、gcc -I
指定编译的头文件目录
4、gcc -L
指定编译时lib文件的目录
5、gcc -WL,-rpath
LD_LIBRARY_PATH的设定作用是全局的,过多的使用可能会影响到其他应用程序的运行,所以多用在调试。通常情况下推荐还是使用gcc的-R或-rpath选项来在编译时就指定库的查找路径,并且该库的路径信息保存在可执行文件中,运行时它会直接到该路径查找库,避免了使用LD_LIBRARY_PATH环境变量查找。
(见代码60行)
6、自动依赖头文件,如果去掉自动依赖头文件,那头文件的修改,将不会重新编译。
(见代码80-96行)
7、$<
第一个依赖项
8、$@
第一个目标项
9、模式替代
bj_targer=$(src_targer:.cpp=.o)
(见代码43行)
10、展开模式替代
$(obj_targer):%.o:%.cpp
g++ -g $(include_std) -c $< -o $@
(见代码75-76行)