我想在不关闭 vi 的情况下编译 cpp 文件。
我知道:!g++ file.cpp但我更喜欢:make所以我在 .vimrc 文件中添加了这一行
au 文件类型 C 设置 makeprg=gcc\ %
au 文件类型 Cpp 设置 makeprg=g++\ %
但我不断收到
“make: ***** No targets specified and no makefile found. Stop.**”消息。
谁能告诉我我的设置有什么问题?
我用上面的选项编译成功。
我想在不关闭 vi 的情况下编译 cpp 文件。
我知道:!g++ file.cpp但我更喜欢:make所以我在 .vimrc 文件中添加了这一行
au 文件类型 C 设置 makeprg=gcc\ %
au 文件类型 Cpp 设置 makeprg=g++\ %
但我不断收到
“make: ***** No targets specified and no makefile found. Stop.**”消息。
谁能告诉我我的设置有什么问题?
我用上面的选项编译成功。
您需要在那里进行替换,请尝试以下操作:
set makeprg=gmake\ %:r.o
哦,这假设你有:
输入以下命令检查默认值:
make -n <my_file>.o
看看这是否给你一些明智的东西。
如果在其他位置有 makefile,您可以添加 -f 选项以指向 makefile,例如:
set makeprg=gmake\ -f\ ../some_other_dir/makefile\ %:r.o
顺便说一句,要了解 make,尤其是 gmake,我建议您看一下优秀的书“使用 GNU Make 管理项目”(经过消毒的亚马逊链接)。
HTH。
干杯
我应该将C,Cpp更改为c,cpp,然后它可以正常工作。
谢谢大家,尤其是Rob Wells,您的回答对我帮助很大。谢谢你。
我认为如果您编写一个 Makefile 并将其放在 vi 可以找到的地方会容易得多。我不确定你是否真的使用 vi(我只使用过 Vim),但是当有 Makefile 时,编译应该像编写:make一样简单(不需要 set makeprg)。
它可以通过使用键映射轻松实现。
首先打开你的 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
希望这可以帮助。
我推荐一个名为 SingleCompile 的 vim 插件,而不是你所做的: http: //www.vim.org/scripts/script.php ?script_id=3115
首先,只需制作该死的make文件。那里的每个工具都希望与 make 一起使用,如果您的编译如此简单,则编写一个将所有 c 和 cpp 文件编译为可执行文件的 make 文件大约需要 30 秒。
其次,如果您拒绝使用 make 文件,请尝试
:help system
这应该为您提供足够的信息来提出您自己的类似于此的命令
:com Mymake call system("g++ ".expand("%"))