LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 819|回复: 3

求用于单文件test的makefile

[复制链接]
发表于 2010-4-14 22:10:05 | 显示全部楼层 |阅读模式
有时候要写单C文件的test程序, 想用make管理, 又不想给每个都写makefile, 求模板

要求在vim中运行, 产生如下效果:
:w
:!gcc -Wall -g % -o %<
:! ./%<(这个可选)

只有一个makefile, 却能处理所有的源文件, prog1.c产生prog1, prog2.c产生prog2...根据vim当前编辑文件确定...

主要是不清楚如何把当前的%和%<传递给make处理...各位大侠, 出招吧...谢谢
 楼主| 发表于 2010-4-14 22:39:37 | 显示全部楼层
自问自答

利用make的隐式规则, makefile中只写下面两句就能实现我要的功能...
  1. CC = gcc
  2. CFLAGS = -Wall -g
复制代码

用的时候prog.c执行:make prog
或者:make %<

谢谢ganquan提示....
回复 支持 反对

使用道具 举报

发表于 2010-4-15 10:41:30 | 显示全部楼层
使用隐式规则无须写 Makefile,可以把 CFLAGS 直接写到环境变量中去。

CC 无须写,系统缺省的就可用。

另外,建议在测试的 CFLAGS 中增加 -O2,因为有很多问题是只有在 -O2 才暴露出来的,而且某些编译器警告与错误只有 -O2 才生效。(这可能是 gcc 的 bug,但是多年以来一直是这样,也就是说,只有 -O2 的时候才具有最完整的 -Wall 指示,而不加优化时某些警告根本不被使能,这都是我在具体项目中曾经吃过亏的地方。)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-4-15 11:30:19 | 显示全部楼层
" Save & Make
nnoremap <F5> :w<CR>:make<CR>
nnoremap <F6> :w<CR>:make %< CC=gcc CFLAGS="-Wall -g -O2"<CR>:!./%<<CR>
nnoremap <F7> :copen<CR>
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表