C++、C 环境配置
Attention
- 以下皆为单文件编译运行,多文件联合需要 makefile(后续更新)
- 插件推荐
1. Windows
首先安装 C、C++ 编译器。较为自由的有以 GNU 为代表的 gcc 和 g++。windows 上没有 GNU,但是有 MinGW(全称 Minimalist GNU on Windows),是 GNU 在 windows 上的版本。安装途径:
- 官网
- Dev C++ 默认使用 MinGW(打开所在路径->dev C++ 所在路径下有一个 MinGW64 的文件夹)
然后配置环境变量( g++,gcc 编译命令需要根据一些路径,找到对应的程序对代码进行编译)
此电脑 -> 属性 -> 高级系统设置 -> 环境变量 -> 系统变量(S) -> Path 双击 -> 新建 -> 找到对应 MinGW 的 gcc, g++路径,例如
D:\software\Dev-Cpp\MinGW64\bin
,将这个路径填写接下来再返回的过程中,每一个窗口都要点击确定 !
可能不会立马生效,需要重启 or 等若干分钟
打开命令行 cmd.exe,输入g++ --version
,如果有版本信息,说明环境配置成功。
现在,给定一个 .c 文件或者 .cpp 文件,我们可以通过命令行编译代码文件了,命令:
g++ test.c -o test
-o 输出到文件,输出文件是 text.exe,默认同目录。
注意一点, gcc, g++ 等编译器只是帮助我们编译了代码文件,并不能直接运行,集成环境(dev C++只是可以帮我们顺便运行输出文件而已)
运行,命令行输入:
test.exe
以上,已经确定完成了 C,C++ 环境的搭建,那么如何在 sublime-text3 中完成这整个过程呢?
打开 sublime-text3 -> Tools -> build systems -> New build systems...
需要填写一个 sublime-build 文件,如下书写:
{
"working_dir": "$file_path",
"cmd": "g++ -Wall -std=c++14 -fexec-charset=GBK \"$file_name\" -o \"$file_base_name\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"selector": "source.c, source.cpp",
"variants":
[
{
"name": "Run",
"shell_cmd": "g++ -Wall -std=c++14 -fexec-charset=GBK \"$file\" -o \"$file_base_name\" && start cmd /c \"\"${file_path}/${file_base_name}\" & pause\""
}
]
}
- g++ 编译 C++,gcc 编译 C,可自行修改。C++兼容C,g++可以编译 c 和 C++;如果非要只编译 C,则将 g++ 改为 gcc,同时删除 -std=c++14
- 编译参数:
- -Wall,开启警告提示
- -std=c++14,按照 C++14 新标准
- -fexec-charset=GBK,编码字符集 GBK;倘若编译运行失败,提示
error: no iconv implementation, cannot convert from UTF-8 to GBK
,则删除-fexec-charset=GBK
选项- -o,输出文件为
- lmysqlclient,链接数据库
- -lpthread,链接多线程库
- -llog4cpp,链接log4cpp库
- -lboost_system -lboost_thread -lboost_filesystem,链接 boost 库
......
假设命名为 C_myself.sublime-build,回到 Tools -> build systems -> 选择刚才命令的的 C_myself,最好别是 automatic。
用法:
用 sublime 打开 test.c 文件,按 F7(或者 ctrl + B),会跳出一个选择,选择最下面的 run,即可,编译运行一键完成。
效果如图:
2. Linux
linux 下一般有 GNU 套件,默认有 gcc 和 g++;如果没有,安装GCC编译器十分简单,终端命令
sudo apt-get install build-essential
(ubuntu)
sudo yum install gcc-c++
(CentOS)
sudo pacman -S gcc
(ArchLinux,如 manjaro)
输入命令 g++ --version
若有版本信息,说明安装成功!
接下来只需要书写 sublime-build 文件即可,例如在 gnome 桌面下,sublime-build 如下:
{
"encoding": "utf-8",
"working_dir": "$file_path",
"shell_cmd": "g++ -std=c++14\"$file_name\" -lpthread -o \"$file_base_name\"",
"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
"selector": "source.c++",
"variants":
[
{
"name": "Run",
"shell_cmd": "g++ -std=c++14 '$file' -lpthread -o '$file_base_name' && gnome-terminal -x bash -c \"'${file_path}/${file_base_name}';read -p '\nmake it !'\""
}
]
}
Ctrl + B(或者 F7) 即可调出终端,输出结果。
如果需要链接第三方库:
- log4cpp :
-llog4cpp
- opencv :
pkg-config --cflags --libs opencv
,放在\"$file_base_name\"
之后有效- boost :
-lboost_system
- Boost.asio(最折腾):
-lboost_system -lboost_thread -lboost_filesystem -I/usr/local/include/boost -L/usr/local/lib
Python 环境配置
1. windows
安装好 Python,书写 sublime-build 文件:
{
"encoding": "utf-8",
"working_dir": "$file_path",
"shell_cmd": "python -u \"$file\"",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"variants":
[
{
"name": "Run",
"shell_cmd": "start cmd /c \"python -u \"$file\" & pause\"",
}
]
}
2. Linux
例如在 Gnome 桌面下,sublime-build 如下:
{
"encoding": "utf-8",
"working_dir": "$file_path",
"shell_cmd": "/usr/bin/python3 -u \"$file\"",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python",
"variants":
[
{
"name": "Run",
"shell_cmd": "gnome-terminal -x bash -c \"python3 '${file}';read -p '\nYHL make it !'\""
}
]
}
Java 配置
1. Windows
安装好 Java 环境之后,书写 sublime-build :
{
"shell_cmd": "ECHO Compiling $file_base_name.java & ECHO ============Out============ & javac -encoding UTF-8 \"$file\" & java \"$file_base_name\"",
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"working_dir": "${file_path}",
"selector": "source.java",
"encoding":"gbk",
"variants":[
{
"name":"编译",
"shell_cmd": "ECHO Compiling $file_base_name.java & javac -d . -encoding UTF-8 \"$file\"",
},
{
"name":"运行当前类",
"shell_cmd":" java \"$file_base_name\" "
},
{
"name":"在cmd中运行",
"shell_cmd":" start cmd /c \"javac -encoding UTF-8 \"$file\" & java \"$file_base_name\" & pause \""
}
]
}