16

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

au 文件类型 C 设置 makeprg=gcc\ %
au 文件类型 Cpp 设置 makeprg=g++\ %

但我不断收到
“make: ***** No targets specified and no makefile found. Stop.**”消息。
谁能告诉我我的设置有什么问题?
我用上面的选项编译成功。

4

6 回答 6

10

您需要在那里进行替换,请尝试以下操作:

set makeprg=gmake\ %:r.o

哦,这假设你有:

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

输入以下命令检查默认值:

make -n <my_file>.o

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

如果在其他位置有 makefile,您可以添加 -f 选项以指向 makefile,例如:

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

顺便说一句,要了解 make,尤其是 gmake,我建议您看一下优秀的书“使用 GNU Make 管理项目”(经过消毒的亚马逊链接)。

HTH。

干杯

于 2009-02-12T10:28:48.220 回答
6

我应该将C,Cpp更改为c,cpp,然后它可以正常工作。

谢谢大家,尤其是Rob Wells,您的回答对我帮助很大。谢谢你。

于 2009-02-13T01:00:06.237 回答
5

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

于 2009-02-12T10:26:12.763 回答
5

它可以通过使用键映射轻松实现。

首先打开你的 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

希望这可以帮助。

于 2015-02-27T14:49:28.197 回答
2

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

于 2010-10-19T17:19:39.037 回答
-5

首先,只需制作该死的make文件。那里的每个工具都希望与 make 一起使用,如果您的编译如此简单,则编写一个将所有 c 和 cpp 文件编译为可执行文件的 make 文件大约需要 30 秒。

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

:help system

这应该为您提供足够的信息来提出您自己的类似于此的命令

:com Mymake call system("g++ ".expand("%"))
于 2009-02-12T22:17:35.567 回答