我想在没有关闭vi的情况下编译cpp文件
我知道:!g ++ file.cpp 但我更喜欢:make 所以我在.vimrc文件中添加了这一行
au FileType C set makeprg = gcc \%
au FileType Cpp set makeprg = g ++ \%
但我一直得到
“make:*****没有指定目标,也没有找到makefile。停止。**”消息。
谁能告诉我我的设置有什么问题呢?
我用上面的选项成功编译。
答案 0 :(得分:10)
您需要替换,尝试类似:
set makeprg=gmake\ %:r.o
哦,这假设你有:
输入以下内容检查默认值:
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("%"))