【Notepad++】用 Notepad++ 编译 C/C++

一. 前情

  想找Notepad++运行命令的可以直接跳到最后。
  平时用的 IDE(集成开发环境)是 Dev-Cpp,因为只是学习阶段,代码还上不了千行,个人认为不需要 VS 那种高大全,VC6.0 又有些地方(不只是审美)不顺眼。
  但最近又发现当把 C++ 代码文件复制到 Ubuntu 18.04 编译运行时,汉字部分总会乱码,因为encoding(字符编码)的问题,Ubuntu的终端只认UTF-8,Windows只认ANSI,Ubuntu虽然我能让VIM显示ANSI,却做不到让终端显示,而Windows 上的 Dev-Cpp 不能设置encoding为 UTF-8,所以想改用 Notepad++ 这个 Editor(编辑器)增加 Compiler (编译器)的功能,平时方便改encoding。

二. 步骤

1. 配置编译器

  1. 官网下载安装MinGW
  2. change:
    MinGW打开后的界面

    选中“mingw32-gcc-g++-bin”的“mark for installation”,选择右上角“Installation”的“Apply Changes”即可。

2. 编辑环境变量

步骤预览

环境变量,在“Administrator 的用户变量”栏找 PATH 变量并编辑,变量值在原有的基础上增加一条“C:\MinGW\bin;”,该值与每个人把 MinGW 安装的位置有关,因人而异。“;”的意义在于当 PATH 的值有多项时,用它把这些项分开。

3. 两种方法检查前两步是否成功

步骤预览
  • 进入 cmd 控制台,输入gcc -vg++ -v查看已加入到环境变量中的编译器版本。显示黄框中的内容属于正常,说明前两步成功。
  • 创建一个简单的 C++ 源代码文件,要保证代码正确能运行。例如 Hello.cpp:
//Hello.cpp
#include<iostream>  
using namespace std;
int main()
{
    cout<<"Hello world, 世界你好!"<<endl;
    return 0;  
}

在 cmd 控制台 cd 到该源代码的目录,然后执行g++ Hello.cpp -o Hello.exe,然后执行Hello.exe /k命令,能正常运行也能说明前两大步没问题。
前一条命令是用 g++ 编译器编译这个源代码并输出 exe 文件到这个目录,后一条是运行 exe 文件(/k 参数使其运行后停留在程序界面,与之相对的 /c 会使其关闭。即 keep 与 close 的对比)。前面两条命令其实可以用“&&”合为一条,即g++ Hello.cpp -o && Hello.exe Hello.exe /k
到这里已经成功一大半了,因为如你所见,已经可以在 cmd 控制台编译并运行源代码了,而赋予 Notepad++ 这个能力,只是让 Notepad++ 一步“对当前打开的源文件用 cmd 执行编译、运行命令”而已。

4. Notepad++ 增加运行命令

打开 Notepad++,按 F5 调出“运行”。复制后面说到的命令,运行即可,建议保存,名称随意。


也可以在工具栏中找“运行(R)”

参考了多个关于 Notepad++ 运行命令和 cmd 命令的资料,经修改后我的命令是cmd /k pushd "$(CURRENT_DIRECTORY)" && g++ -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" && "$(NAME_PART)".exe & PAUSE & EXIT(无分行,是一整条命令),要理解这条命令的话可以将其一分为六,即:

  1. cmd /k打开 cmd 控制台,运行完程序让其停留而不自动关闭。
  2. pushd "$(CURRENT_DIRECTORY)"将工作路径更换到源文件所在的路径,例如'pushd E:\kkk'相当于 cmd 中先e:cd kkk,这条命令在源代码要调用同目录文件而只写了相对路径时尤为重要。因为 Notepad++ 的默认工作路径是它自己的安装路径。
  3. g++ -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)":调用环境变量中的编译器 g++.exe 来将源代码编译成同名 exe 文件并输出到相同路径。
  4. "$(NAME_PART)".exe运行源代码编译出的可执行文件。
  5. PAUSE:暂停,提示“按任意键继续”,配合下一条命令实现“按任意键关闭”的效果,两者都没有的话程序运行完就会秒关。
  6. EXIT关闭 cmd 控制台,没有的话按任意键会退到 cmd 命令台,等待输入下一条命令。
  • $(CURRENT_DIRECTORY)代表文件所在目录的路径。
  • $(NAME_PART)表示该文件无后缀部分的文件名。
  • $(FULL_CURRENT_PATH)代表当前完整的文件路径。
  • 双引号(半角):用于防止目录或文件名中含空格的情况。
  • “&&”和“&”:前者表示上一条命令正常执行完再执行下一条命令,非正常则不执行下一条;后者无顾虑。例如一分为六后的后两条子命令,表示不管源代码编译、运行是否成功,都会出现“按任意键继续”字样,并且按任意键后关闭 cmd 控制台。

三. 后续

  折腾了接近半天后,发现和 Ubuntu 一样,只是让编辑器能显示 UTF-8,却做不到控制台显示。也就是 Notepad++ 能显示 UTF-8/ANSI,但运行后 cmd 控制台还是只认 ANSI。蓝瘦。
参考资料:
(下表是参考的4篇文章,0/1代表我个人的满意情况,逗号后面是具体情况)

参考资料 编译器配置解释 编译运行完 代码调用与源代码同一目录的文件 含cmd命令行解释
a 0,MinGW 0,留在工作目录 1,chdir 0
b 0,TDM-GCC或Dev C++ 1,pause,exit 0 1
c 1,MinGW 1,pause,exit 0 1
d 0,MinGW 0,秒关窗口 1,pushd 1

举一反三,参照之前的命令,也能写出运行Python的运行命令,比g++编译器要简单:cmd /k pushd "$(CURRENT_DIRECTORY)"&&python "$(NAME_PART)".py & PAUSE & EXIT

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容

  • .bat脚本基本命令语法 目录 批处理的常见命令(未列举的命令还比较多,请查阅帮助信息) 1、REM 和 :: 2...
    庆庆庆庆庆阅读 7,931评论 1 19
  • 5.3 Windows安装说明 译者:Python 文档协作翻译小组,原文:Windows Installatio...
    布客飞龙阅读 1,574评论 0 4
  • Notepad++是一套为自由软件的纯文本编辑器,它可以用来编译多种语言。本文主要讲述如何在Notepad++上配...
    uubs阅读 6,898评论 1 5
  • win7 cmd管理员权限设置 net localgroup administrators 用户名 /add 把“...
    f675b1a02698阅读 4,972评论 0 11
  • em 和 rem单位之间的区别是浏览器根据谁来转化成px值 ,因此理解这种差异是决定何时使用哪个单元的关键。 re...
    YT_Zou阅读 321评论 0 1