Vim编程下自创Makefile模板
2015-01-17 18:18
246 查看
前言
一直都对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.
多个连接模块,使用空格分开。
以上都只是编译过程的Makefile配置方法,当程序需要运行时,还需要把动态链接库放到/usr/local/lib中,然后命令行输入ldconfig,这样才可以使得可执行文件可以单独运行。
转载请注明出处:/article/7693277.html
相关文章推荐
- 实现编程时Vim自动导入相应模板
- 实现编程时Vim自动导入相应模板
- 【东南大学】【仪器科学与工程学院】C++下第四次上机作业 单链表类模板 非书上版本 本人自创版本 部分参考书上 包含编程时一些该注意的事项
- Linux编程Makefile模板
- makefile通用模板
- uClinux下多线程编程的Makefile
- 把Vim改装成一个IDE编程环境
- 手把手教你把Vim改装成一个IDE编程环境
- 大家一起用gtk编程3(初步使用Makefile)
- 一套的实用完整Makefile参考模板
- 模板高级编程
- Vim/Vi编程提速[转]
- 本文是笔者根据数据库编程经验,利用C++语言的模板、继承、授权、多态等面向对象特性,借鉴命令模式,实现了对象在关系数据中的存储,降低应用系统与数据库之间的耦合,提高开发效率。
- 手把手教你把Vim改装成一个IDE编程环境(图文)By: 吴垠
- 手把手教你把Vim改装成一个IDE编程环境(图文)
- 项模板的使用--提高编程速度
- 手把手教你把Vim改装成一个IDE编程环境(图文)
- linux编程——makefile文件
- 手把手教你把Vim改装成一个IDE编程环境(图文) -- 续1
- [编程代码]一个linux下的gcc/c语言makefile