Vim编程下自创Makefile模板
前言
一直都对Linux和Vim情有独钟,其实windows也很不错,因为工作上难免有些情况只能使用windows进行开发,包括有些API或者SDK都只有windows版本,只是用Linux的时候就感觉和计算机特别亲近的感觉,哈哈哈,夸张而言。
至于Vim(这里暂且不讨论vim和emacs谁更好的问题,这个是哲学问题),对比起大多数人估计都习惯使用IDE进行编程,使用vim确实难度会大很多,所以,如果不是专业的开发人员,其实也没有必要使用vim编程,不过有时候想,如果当年大学的编程课教的不是使用IDE编程而是文本编辑器编程,估计对于很多热爱开发的人员来说,效率会高很多,因为用IDE总有很多你完全不知道为什么都错误出现,我也是经过了很长一段时间的积累,加上看了《C++对象模型》和使用了Vim编程之后才慢慢理解了曾经“无厘头”的错误。
最重要的是,一旦精通了Linux下使用Vim编程,从此那些关于链接库和头文件链接的问题都会迎刃而解。
Makefile是什么
相信如果不用IDE编程的话,必须要会的就是如何使用Makefile去连接头文件、库文件和源文件。
网上有像《Makefile经典教程》这样的教程,不过话说,我自己也看到不少于三遍也没有完全记住,但实际使用中,其实也不是全部都用得上,即使是在大型的团队合作项目中,同时使用多个我提供的Makefile模板也足够应付了,那些高级的功能(如变量、函数使用)更多的是应用于编写SDK或API或者函数库中才会使用到。
我的Makefile模板
#Makefile file DIR_INC = ./include #所有头文件放到此处 DIR_SRC = ./scr #所有源文件放到此处 DIR_OBJ = ./obj #所有中间件文件放到此处 DIR_BIN = ./bin #生成的文件放到此处 DIR_3RD = ./3party #第三方库的头文件放到此处 DIR_LIB = ./lib #第三方库文件的链接库放到此处 SRC = $(wildcard ${DIR_SRC}/*.cc) OBJ = $(patsubst %.cc,${DIR_OBJ}/%.o,$(notdir ${SRC})) TARGET = mian #生成的文件名 BIN_TARGET = ${DIR_BIN}/${TARGET} CC = g++ CXXFLAGS = -g -Wall -I${DIR_INC} -I${DIR_3RD} LDFLAGS = -L${DIR_LIB} LIBS= -lopencv_core -lopencv_highgui #链接库模块,使用空格隔开多个文件 ${BIN_TARGET} : ${OBJ} $(CC) $(OBJ) -o $@ $(LDFLAGS) $(LIBS) ${DIR_OBJ}/%.O:${DIR_SRC}/%.cc $(CC) $(CXXFLAGS) -c $< -o $@ .phony:clean clean: find ${DIR_OBJ} -name *.o -exec rm -rf {}\;
一些注意事项
- 整个Makefile文件都不要使用空格键最为安全,你看到的所有空格其实是有Tab键产生的,一旦使用了空格键,文件是默认空格是编译语言的其中一部分,从而会导致错误的出现。包括在编写注释的时候,也不要用空格,我就是因为图方便用了空格对齐所有的注释,结果,浪费了一个半小时排查原因。
- 使用-l连接库模块时,不要直接写文件名,要把文件名中开头的lib去掉。例如,源文件是libopencv_core.so,在连接时使用-lopencv_core.
- 多个连接模块,使用空格分开。
转载请注明出处:http://blog.csdn.net/luoyun614/article/details/42806875
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。