您的位置:首页 > 编程语言 > C语言/C++

windows下搭建c++开发环境(MinGW-64 + VIM)

2020-02-29 19:47 218 查看

windows下搭建c++开发环境(MinGW-64 + VIM)

前言

  • c++开发环境的搭建有两种方式,一是安装集成开发环境(IDE),c++有许多IDE。如Code::BlocksDev c++CodeLite
  • 如果你正初学c/c++,那么推荐安装Dev c++,下面的教程可以不看了,这款IDE中文支持良好,体积小,运行速度快,安装过程非常简单,而且使用者多。附上一篇别人的安装教程
  • 但IDE软件大,功能多,不够灵活。如果你想要像打开记事本一样,随手打开一个文本文档就可以编程,或者对VIM情有独钟。这篇文章介绍第二种方法:编译器+编辑器,我认为适合爱折腾的初学者,我做这个主要用于算法学习。

所需文件介绍,及其下载地址

1.编译器: MinGW-64,进入网址后点击Files,文件在该目录下:Toolchains targetting Win64–>Personal Builds–>mingw-builds–>8.1.0–>threads-posix–>seh
这里下载的是64位、seh异常处理机制、POSIX线程的gcc包。
什么是MinGW-64?我也不清楚,只能贴过来一篇文章,c++有很多编译器,其他不做介绍。
2. 编辑器:vim,进入网址后点击Download再点击PC: MS-DOS and MS-Windows,再点击gvim82.exe(ftp)完成下载

MinGW-64安装过程

把下载好的x86_64-8.1.0-release-posix-seh-rt_v6-rev0解压,得到文件夹mingw64,然后把mingw64随便放到一个目录下,把mingw64目录下的bin添加环境变量即可。
我把mingw64放到了E盘,具体操作如下:
1.鼠标右键点击电脑,点击属性

2.点击高级系统设置

3.点击环境变量

4.双击path

5.将bin目录添加到path中,然后全部确定。到此安装完成

6.测试是否安装完成,在命令行输入

gcc -v
,可以看到版本信息。
7.helloword程序测试,将这段代码写入hello.cpp文件中,把hello.cpp放到桌面,用g++命令编译,生成a.exe文件,执行a.exe输出"HELLO WORLD"。注意了,编译的时候不能使用gcc命令,虽然gcc命令可以编译c++源码,但是它不能自动链接c++的函数库。

#include<iostream>
using namespace std;
int main()
{
cout<<"HELLO WORLD"<<endl;
return 0;
}

vim安装以及配置

  1. 安装 vim
    程序安装:点开gvim82.exe一直下一步就好。安装完成后会生成一系列的vim编辑器
    环境变量配置:和上面MinGW-64配置环境变量一样,把vim目录下的vim82添加到环境变量path中,然后确定。
    什么是vim?vim如何使用?vim学习成本很高,我正在想为什么要写这篇博客,开弓没有回头箭,一直做下去吧,


2. 把vim打造成为一个c/c++开发的IDE
vim可以通过自己定制,成为一个顺手的c/c++程序编写工具。我不使用插件,只需要修改配置文件,把我的配置文件复制粘贴到vim目录下的_vimrc中,将原来的内容覆盖,就能达到一样的效果。
我要在vim中实现的功能:

  • F2为一键java,c,c++,sh文件添加文件头
  • F5一键保存、编译、运行(支持java,c,c++,sh)
  • F8编译调试
  • 语法高亮。自动识别代码,使用多种颜色显示。

  • 配置文件_vimrc内容,下载解压后替换掉原来vim目录下的_vimrc文件也可以。
    这个配置文档是使用"做注释的:
" Vim with all enhancements
source $VIMRUNTIME/vimrc_example.vim

" Remap a few keys for Windows behavior
source $VIMRUNTIME/mswin.vim

" Use the internal diff if available.
" Otherwise use the special 'diffexpr' for Windows.
if &diffopt !~# 'internal'
set diffexpr=MyDiff()
endif
function MyDiff()
let opt = '-a --binary '
if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
let arg1 = v:fname_in
if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
let arg1 = substitute(arg1, '!', '\!', 'g')
let arg2 = v:fname_new
if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
let arg2 = substitute(arg2, '!', '\!', 'g')
let arg3 = v:fname_out
if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
let arg3 = substitute(arg3, '!', '\!', 'g')
if $VIMRUNTIME =~ ' '
if &sh =~ '\<cmd'
if empty(&shellxquote)
let l:shxq_sav = ''
set shellxquote&
endif
let cmd = '"' . $VIMRUNTIME . '\diff"'
else
let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
endif
else
let cmd = $VIMRUNTIME . '\diff'
endif
let cmd = substitute(cmd, '!', '\!', 'g')
silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3
if exists('l:shxq_sav')
let &shellxquote=l:shxq_sav
endif
endfunction

" 上面的是默认配置,下面是手动添加的。

set encoding=utf-8	"设置文件的代码形式 utf8
set termencoding=utf-8
set fileencoding=utf-8
set fileencodings=ucs-bom,utf-8,chinese,cp936

set shortmess=atI	" 启动时关闭公益广告

set number		" 显示行号

syntax on		" 打开语法高亮。自动识别代码,使用多种颜色显示。
set t_Co=256		"启用256色

set cursorline		"光标所在行高亮

"set wrap		"自动拆行,一行太长的代码分行显示(已经注释,要使用把set前面的分号删除)

set autoindent		" 自动缩进

set cindent

set tabstop=4		" Tab键的宽度

set softtabstop=4	" 统一缩进为4

set shiftwidth=4

set noexpandtab		" 不要用空格代替制表符

set smartindent		" 为C程序提供自动缩进

colorscheme evening	" 设置配色方案

map <C-A> ggVGY		"映射全选 ctrl+A

vmap <C-C> "+y		"映射复制 ctrl+C

map <C-V> "+gP		"映射粘贴ctrl+V

set noundofile		"不生成撤销历史
set nobackup		"不生成备份文件
set noswapfile		"不生成交换文件,主要用于系统崩溃时恢复文件

if version >= 603	" 显示中文帮助
set helplang=cn
set encoding=utf-8
endif

set noerrorbells	"出错时,不要发出响声
set visualbell		"出错时,发出视觉提示
set history=1000	"Vim 需要记住多少次历史操作

"vim的菜单乱码解决
source $VIMRUNTIME/delmenu.vim
source $VIMRUNTIME/menu.vim

"vim提示信息乱码的解决
language messages zh_CN.utf-8

"C,C++ 按F5编译运行
map <F5> :call CompileRunGcc()<CR>
func CompileRunGcc()
exec "update"
if &filetype == 'c'
exec "!gcc % -o %< & %<"
elseif &filetype == 'cpp'
exec "!g++ % -o %< & %<"
elseif &filetype == 'java'
exec "!javac % & java %<"
elseif &filetype == 'sh'
exec "!%"
endif
endfunc
"C,C++的调试
map <F8> :call Rungdb()<CR>
func! Rungdb()
exec "!g++ % -g -o %<"
exec "!gdb %<"
endfunc
"按F2给c,c++,java,sh添加文件头
map <F2> :call SetTitle()<CR>
func SetTitle()
if &filetype == 'c'
call setline(1,"\#include <stdio.h>")
call setline(2,"\#include <stdlib.h>")
call setline(3,"")
call setline(4,"int main()")
call setline(5,"{")
call setline(6,"\tprintf(\"Hello world!\\n\");")
call setline(7,"\treturn 0;")
call setline(8,"}")
call setline(9,"")
elseif &filetype == 'cpp'
call setline(1,"\#include <iostream>")
call setline(2,"")
call setline(3,"using namespace std;")
call setline(4,"")
call setline(5,"int main()")
call setline(6,"{")
call setline(7,"\tcout << \"Hello world!\" << endl;")
call setline(8,"\treturn 0;")
call setline(9,"}")
call setline(10,"")
elseif &filetype == 'java'
call setline(1,"public class ".expand("%<")." {")
call setline(2,"\tpublic static void main(String[] args){")
call setline(3,"\t\tSystem.out.println(\"Hello World\");")
call setline(4,"\t}")
call setline(5,"}")
elseif &filetype == 'sh'
call setline(1, "\#!/bin/bash")
call setline(2, "")

endif
:$
endfunc

配置这个文件参考了网上许多的资料下面贴出来一些把
Vim 配置入门在VIM下写C++能有多爽Vim的终极配置方案,完美的写代码界面!

  • 点赞 3
  • 收藏
  • 分享
  • 文章举报
太阳一晒想睡觉 发布了2 篇原创文章 · 获赞 4 · 访问量 621 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: