2009-02-12 93 views
14

我想编译没有关闭vi的cpp文件。
我知道:G ++ file.cpp但我更喜欢:让,所以我说在.vimrc文件
直接从vim编译

AU文件类型账套makeprg = gcc的\%
AU文件类型的cpp该线设置makeprg = G ++ \%

,但我不断收到
“使:*****没有指定目标,并没有发现makefile文件停止**。” 消息。
任何人都可以告诉我我的设置有什么问题吗?
我用上面的选项成功编译。

+1

在当前目录中搜索名为Makefile的文件。可能是这个问题?我自己是一个makefile-newbie,所以这只是一个猜测。 – Srikanth 2009-02-12 10:25:58

+0

我不知道什么“au FileType CPP set makeprg” 的内部动作,但我从另一个服务器编译w/o Makefile。我不明白为什么我不能在我自己的电脑中编译 我使用的是Ubuntu 8.10 – 2009-02-12 10:31:09

+0

我从来没有听说过:关于vi的make。这是对vim的改进吗? – mouviciel 2009-02-12 10:34:06

回答

6

我应该改变C,Cpp分成c,cpp,那么它工作正常。

谢谢大家,特别是Rob Wells,你的回答帮了我很多。谢谢。

5

我觉得如果你编写一个Makefile并把它放在vi可以找到的地方就容易多了。我不确定你是否真的使用vi(我只使用过Vim),但是当有Makefile编译时,应该像编写:make(不需要set makeprg)一样简单。

+0

谢谢你的回答。但是我使用编辑器来处理项目euler问题等非常小的项目。所以每次我写代码,都会让Makefile变得很刺激。这就是为什么我试图使用:make(直接编译)。 – 2009-02-12 10:29:17

10

您需要替换在那里,你可以试试:

set makeprg=gmake\ %:r.o 

哦,这是假定你已经有了:

  1. 一个(M | M)akefile在目录中,或
  2. 默认SUFFIX规则可用于您的环境(它看起来好像没有)

检查f或默认输入:

make -n <my_file>.o 

看看是否给你一些合理的。

如果在其他位置生成文件,你可以添加-f选项在Makefile点,例如:

set makeprg=gmake\ -f\ ../some_other_dir/makefile\ %:r.o 

BTW对于学习化妆,尤其是GMAKE,我建议有看看这本优秀的书“使用GNU Make管理项目”(sanitised Amazon link)。

HTH。

欢呼声

-5

首先,只是让血腥的make文件。那里的每一个工具都希望能够使用make,如果你的编译很简单,那么编写一个将所有c和cpp文件编译成可执行文件的make文件需要大约30秒的时间。

其次,如果你拒绝使用make文件,然后尝试

:help system 

这应该给你足够的信息来拿出自己的命令与此类似

:com Mymake call system("g++ ".expand("%")) 
2

它可以通过使用关键地图可以轻松实现。

首先打开你的vimrc文件以及这些行的文件,

autocmd filetype cpp nnoremap <F4> :!g++ % -ggdb -o %:r <CR> 
autocmd filetype cpp nnoremap<F5> :!g++ % -ggdb -o %:r && ./%:r <CR> 

第一行映射的关键F4以编译文件。第二行将键F5映射到编译并运行

如果您经常使用gdb,那么这也可能会得心应手。

autocmd filetype cpp nnoremap<F10> :!g++ % -ggdb -o %:r && gdb -tui %:r <CR> 

此行的关键F10映射到编译并启动gdb

希望这有助于。