平时在IDE下面进行c/c++开发,总的来说比较方便,但是IDE占用资源较多,自己一般是写一点小程序,所以打算配置一下sublime来当做小程序的编译环境,懒得打开IDE。
配置流程总的来说比较简单,但是在过程中还是遇到一些问题。网络上的资料很混杂,有的实践的时候根本跑不通,个人经过测试总结了一下,希望能够帮助一下他人。
问题一:sublime无法直接安装插件问题?
描述:看网上有很多教程在sublime中直接输入关键字搜索插件然后下载,傻瓜式安装完成直接使用,之前自己做python的时候弄过,没有解决,这次又重新配置一下,但是,网上的教程基本上都试了一遍后,发现似乎并么有什么用!我的sublime版本是比新的sublime3。也就是说如果你是新下载的sublime,傻瓜式安装插件这条路需要慎重。
解决方法:在网上搜索一下需要的相关插件直接去github下载,然后放入自己的sublime安装目录中的->安装目录\Sublime Text3\Data\Packages中即可,还是比较简单的,如果有的插件放入后提示缺少.dll文件,可以去网上搜索下载一个
问题二:编译器的配置?
在配置编译器前需要下载将编译器添加到系统环境变量中,如果在cmd窗口中输入gcc -v输出版本信息表明成功。然后依次点击菜单栏的工具-编译系统-新编译系统,输入编译编译选项保存为xxx.sublime-build即可,这个编译选项网上资料比较多,笔者测试后给出几个可用并且稍有不同的版本。(由于一般的小程序也涉及到输入输出,所以给出的版本全部带有控制台窗口)
版本一:编译c文件
{
"working_dir": "$file_path",
"cmd": "gcc -Wall \"$file_name\" -o \"$file_base_name\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"selector": "source.c",
"variants":
[
{
"name": "Run",
"shell_cmd": "gcc -Wall \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\""
}
]
}
版本二:编译c/c++
{
"encoding": "utf-8",
"working_dir": "$file_path",
"shell_cmd": "g++ -Wall -std=c++11 \"$file_name\" -o \"$file_base_name\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"selector": "source.c++",
"variants":
[
{
"name": "Run",
"shell_cmd": "g++ -Wall -std=c++11 \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\""
}
]
}
版本三:带
gdb的编译c/c++
{
"encoding": "utf-8",
"working_dir": "$file_path",
"shell_cmd": "g++ -Wall -std=c++11 \"$file_name\" -o \"$file_base_name\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"selector": "source.c++",
"variants":
[
{
"name": "Run in sublime",
"shell_cmd": "g++ -Wall -std=c++11 \"$file_name\" -o \"$file_base_name\" && cmd /c \"${file_path}/${file_base_name}\""
},
{
"name": "CMD Run",
"shell_cmd": "g++ -Wall -std=c++11 \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\""
},
{
"name": "gdb Debug",
"shell_cmd": "g++ -g -std=c++11 \"$file\" -o \"$file_base_name\" && start cmd /c gdb ${file_path}/${file_base_name} & pause"
}
]
}
版本四:编译c/c++(
修正控制台中文字符输出乱码问题)
{
"cmd": ["g++", "${file}", "-fexec-charset=gbk","-o", "${file_path}/${file_base_name}", "&", "start", "cmd", "/c", "${file_base_name} & echo. & pause"],
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c, source.c++",
"shell": true,
"encoding":"cp936",
}
各个编译器配置有一些区别,如果在使用网上某些编译配置时出现类型错误
C:\Users\ADMINI~1\AppData\Local\Temp\ccL0aVye.o:moban.cpp:(.text+0x37): undefined reference to `std::ios_base::Init::~Init()'
C:\Users\ADMINI~1\AppData\Local\Temp\ccL0aVye.o:moban.cpp:(.text+0x58): undefined reference to `std::ios_base::Init::Init()'
D:/programs/codeblock/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: C:\Users\ADMINI~1\AppData\Local\Temp\ccL0aVye.o: bad reloc address 0x0 in section `.ctors'
D:/programs/codeblock/CodeBlocks/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../../mingw32/bin/ld.exe: final link failed: Invalid operation
collect2.exe: error: ld returned 1 exit status
可以通过调整编译选项中的gcc为g++修正,他们关系如下:
// (1)gcc和g++都是GNU(组织)的一个编译器。
// (2)后缀名为.c的程序和.cpp的程序g++都会当成是c++的源程序来处理。不通的时gcc会把.c的程序处理成c程序。
// (3)对于.cpp的程序,编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。
问题三:在装插件sublimeclang时提示错误,错误原因如下:
问题分析:大概原因是由于libclang不支持64位的,需要自己编译。
解决方法:自己编译或者下载一个liblang_x64.dll,文件可在后面下载
希望大家都能快速配好sublime编译环境