直接从vim编译

时间:2009-02-12 10:22:52

标签: c++ vim compilation

我想在没有关闭vi的情况下编译cpp文件 我知道:!g ++ file.cpp 但我更喜欢:make 所以我在.vimrc文件中添加了这一行

  

au FileType C set makeprg = gcc \%
  au FileType Cpp set makeprg = g ++ \%

但我一直得到 “make:*****没有指定目标,也没有找到makefile。停止。**”消息。
谁能告诉我我的设置有什么问题呢? 我用上面的选项成功编译。

6 个答案:

答案 0 :(得分:10)

您需要替换,尝试类似:

set makeprg=gmake\ %:r.o

哦,这假设你有:

  1. 目录中的(M | m)akefile,或
  2. 默认的SUFFIX规则适用于您的环境(看起来没有)
  3. 输入以下内容检查默认值:

    make -n <my_file>.o
    

    看看是否能给你一些明智的东西。

    如果在另一个位置有makefile,你可以添加-f选项指向makefile,例如:

    set makeprg=gmake\ -f\ ../some_other_dir/makefile\ %:r.o
    
    BTW为了学习make,尤其是gmake,我建议你看一本优秀的书“用GNU Make管理项目”(sanitised Amazon link)。

    HTH。

    欢呼声

答案 1 :(得分:6)

我应该将 C,Cpp 更改为 c,cpp ,然后才能正常工作。

谢谢大家,特别是 Rob Wells ,你的回答对我很有帮助。谢谢。

答案 2 :(得分:5)

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

答案 3 :(得分:2)

我推荐一个名为SingleCompile的vim插件,而不是你所做的: http://www.vim.org/scripts/script.php?script_id=3115

答案 4 :(得分: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

希望这有帮助。

答案 5 :(得分:-5)

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

其次,如果您拒绝使用make文件,请尝试

:help system

这应该给你足够的信息来提出你自己的命令

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