Notepad++改造成C/C++ IDE [真正意义上的IDE]
2015-08-30 21:33
295 查看
本文教大家怎么将Notepad++改造成自己喜欢的C/C++编译器。并且提供一些实用的方法让你的IDE更加好用,更加实用。此外还提出在使用过程中容易犯的问题以及相应的解决办法。
在此说明,本文学习参考了博客:http://aofengblog.blog.163.com/blog/static/63170212010111164752194/。感谢该作者的分享。
一、安装MinGW编译器
如果您已经安装过CodeBlocks,就不需要安装了,只需要将绝对路径MinGW\bin添加到您的环境变量path中。
如果您还没有安装任何的MinGW编译器,请先安装,并将bin文件的绝对路径添加到您的环境变量path中。
二、调用cmd形式
在Notepad++中,可以直接打开cmd,并且cmd已经将工作路径更换到当前文件中了
在:菜单运行\Open current dir cmd,会弹出cmd命令行,并且工作路径已经更换到当前文件的路径中
测试如下:新建一个main.cpp文件,输入如下,打开菜单运行\Open current dir cmd,输入g++ -o main.exe main.cpp并回车,这样就生成了与main.cpp同路径的main.exe文件,下一步执行main.exe,就能在cmd窗口中输出Hello world。
以上只是取巧的办法,方便一次两次的运行,这里写出来只是为了让看客们知道这种另类的方法。如果您希望将NotePad++改成一个真正可执行的IDE,就请继续下面的学习之旅。
三、安装NppExec插件
1、NppExec安装
以上博主提供了NppExec_041_dll_Unicode.zip的连接,请先行下载。
下载并解压NppExec_041_dll_Unicode.zip,将 NppExec.dll 和目录NppExec
复制到Notepad++ 的 plugins 目录下
将doc目录下的fparser.html、NppExec.txt、NppExec_Manual.chm、NppExec_Manual.knt、NppExec_TechInfo.txt
复制到 plugins\doc\NppExec 目录下。NppExec文件如果没有就自己新建一个
重新启动Notepad++
2、NppExec配置
a. 打开:菜单Plugins\NppExec\Execute。对于中文的Notepad++为:插件\NppExec\Execute
b. C语言编译器配置:在Execute中输入cmd /c "gcc -o $(CURRENT_DIRECTORY)\$(NAME_PART) $(FULL_CURRENT_PATH) && CLS && pushd $(CURRENT_DIRECTORY) && $(NAME_PART).exe",点击“Save...”按钮保存,命名为“CompilerC”。
c. C++编译器配置:在Execute中输入cmd
/c "g++ -o $(CURRENT_DIRECTORY)\$(NAME_PART) $(FULL_CURRENT_PATH) && CLS && pushd $(CURRENT_DIRECTORY) && $(NAME_PART).exe",点击“Save...”按钮保存,命名为“CompilerC++”。
d. 将CompilerC和CompilerC++添加到Macros菜单中
打开Pluguns\NppExec\Advanved Options,对于中文的Notepad++为:插件\NppExec\Advanved
Options
在Associated
script中分别选择CompilerC和CompilerC++,点击Add/Modify依次添加到Menu items中,期间注意修改Item name。在Menu items中勾选Place to the Macros submenu。
e. 加上快捷键
打开:宏\管理快捷键...。可以看到,已经有了CompilerC和CompilerC++两栏。下一步我们分别为他们设置快捷键F9和F10。
选择Plugin commands,找到我们需要的CompilerC和CompilerC++,Notepad++将大部分快捷键都占用了,但是F9和F10都没有用,这里可以将这两个键用上。
四、使用分析
1. 回到输入cmd
/c "gcc -o $(CURRENT_DIRECTORY)\$(NAME_PART) $(FULL_CURRENT_PATH) && CLS && pushd $(CURRENT_DIRECTORY) && $(NAME_PART).exe"这句话(以CompilerC为例,CompilerC++类似)
这里解释下这句话:用/c的方式打开cmd,调用gcc.exe,输出文件为本文件所在路径下与本文件名同名的exe,输入文件为本文件绝对路径,之后执行CLS命令,之后将工作路径更换到当前路径下,调用与本文件同名的exe文件执行。网上很多有关Notepad++安装配置C/C++编译器的博客都是抄自于一同个人,所以大多都一样,而且不使用。在小布博客中,采用了不一样的命令,带给您不尽的便利。主要修改在于1:$(CURRENT_DIRECTORY)\$(NAME_PART)
将最终生成的可执行文件放在了与main源程序相同的路径下,网上别的方法会将exe生成在Notepad++的安装路径下,这是用户不愿看到的;2:pushd $(CURRENT_DIRECTORY) && $(NAME_PART).exe。将cmd的工作路径更换到当前路径下,并调用生成的可执行文件,如果不更换路径,就会发生在cmd默认路径下远程调用生成的exe,如果程序中需要打开文件、生成文件,路径都需要改为相对于cmd默认路径来,只有将当前cmd路径换到exe本身的路径下,才能更方便的使用。题外话,大家可以尝试用/k的方式打开cmd。
C/C++中有时需要带参数的main。(void main(int args, char *argv[]))。这个参数通过Notepad++怎么传递呢?在我们以上输入中,最后一句话为$(NAME_PART).exe,代表在cmd中调用了一个可执行文件exe,但是没有给参数,如果我们需要传递参数,就需要给在:菜单Plugins\NppExec\Execute中进行设置,将需要的参数添加在$(NAME_PART).exe后面,例如想要使用CompilerC++并添加两个参数,分别是100和1000,只需要在菜单Plugins\NppExec\Execute中选中CompilerC++,并输入cmd
/c "g++ -o $(CURRENT_DIRECTORY)\$(NAME_PART) $(FULL_CURRENT_PATH) && CLS && pushd $(CURRENT_DIRECTORY) && $(NAME_PART).exe 100 1000"。即添加了参数在末尾,以空格隔开。
2.
考虑到源文件中基本上会包含(#include)很多自己写的文件,部分编译器会自动在源文件所在目录下搜索包含的文件,如果您的编译器不会这样做,源文件中包含的自己写的头文件就不能正确的被找到,因为当前工作路径在cmd的默认路径下。为解决这个问题,就需要将pushd动作提前,改为这句话:cmd /c "pushd
$(CURRENT_DIRECTORY) && gcc -o $(NAME_PART) $(FULL_CURRENT_PATH) && $(NAME_PART).exe"。这句话先将工作路径更换到源文件所在的路径,再调用gcc.exe编译源文件,这样工作路径更改了,头文件只要相对于源文件给出相对包含路径就能正确找到了。还是那句话,由于大部分编译器会自动在源文件所在目录下搜索包含的文件,所以这点修改是不必要的,只是针对于比较old的编译器可能会出现这样的问题。
3.
代码都对了,可是编译的时候还是出现问题
由于Notepad++在新建文件的时候默认是采用UTF-8无BOM编码格式,编码这一块小布还是很熟悉的,欢迎讨论,有关编码问题这篇文章写得不错http://www.cnblogs.com/chenwenbiao/archive/2011/08/11/2134503.html。而大部分C/C++编译器需要ANSI编码,所以需要将源文件都转换成ANSI编码。如果您的源文件中出现汉字,就需要进行UTF-8无BOM编码到ANSI编码的转换操作,如果源文件不包含任何汉字,不用转换也可以,因为UTF-8无BOM编码兼容ANSI编码,就是说,纯英文符号的文件,两种编码编出的码是一样的,所以有些人会疑惑,为什么添加了汉字在文件中就不能正确的运行了。因为编码出错了。
可以修改Notepad++创建文本是默认的编码,打开:菜单设置\首选项。在新建中将编码栏选中ANSI就好了。
在此说明,本文学习参考了博客:http://aofengblog.blog.163.com/blog/static/63170212010111164752194/。感谢该作者的分享。
一、安装MinGW编译器
如果您已经安装过CodeBlocks,就不需要安装了,只需要将绝对路径MinGW\bin添加到您的环境变量path中。
如果您还没有安装任何的MinGW编译器,请先安装,并将bin文件的绝对路径添加到您的环境变量path中。
二、调用cmd形式
在Notepad++中,可以直接打开cmd,并且cmd已经将工作路径更换到当前文件中了
在:菜单运行\Open current dir cmd,会弹出cmd命令行,并且工作路径已经更换到当前文件的路径中
测试如下:新建一个main.cpp文件,输入如下,打开菜单运行\Open current dir cmd,输入g++ -o main.exe main.cpp并回车,这样就生成了与main.cpp同路径的main.exe文件,下一步执行main.exe,就能在cmd窗口中输出Hello world。
以上只是取巧的办法,方便一次两次的运行,这里写出来只是为了让看客们知道这种另类的方法。如果您希望将NotePad++改成一个真正可执行的IDE,就请继续下面的学习之旅。
三、安装NppExec插件
1、NppExec安装
以上博主提供了NppExec_041_dll_Unicode.zip的连接,请先行下载。
下载并解压NppExec_041_dll_Unicode.zip,将 NppExec.dll 和目录NppExec
复制到Notepad++ 的 plugins 目录下
将doc目录下的fparser.html、NppExec.txt、NppExec_Manual.chm、NppExec_Manual.knt、NppExec_TechInfo.txt
复制到 plugins\doc\NppExec 目录下。NppExec文件如果没有就自己新建一个
重新启动Notepad++
2、NppExec配置
a. 打开:菜单Plugins\NppExec\Execute。对于中文的Notepad++为:插件\NppExec\Execute
b. C语言编译器配置:在Execute中输入cmd /c "gcc -o $(CURRENT_DIRECTORY)\$(NAME_PART) $(FULL_CURRENT_PATH) && CLS && pushd $(CURRENT_DIRECTORY) && $(NAME_PART).exe",点击“Save...”按钮保存,命名为“CompilerC”。
c. C++编译器配置:在Execute中输入cmd
/c "g++ -o $(CURRENT_DIRECTORY)\$(NAME_PART) $(FULL_CURRENT_PATH) && CLS && pushd $(CURRENT_DIRECTORY) && $(NAME_PART).exe",点击“Save...”按钮保存,命名为“CompilerC++”。
d. 将CompilerC和CompilerC++添加到Macros菜单中
打开Pluguns\NppExec\Advanved Options,对于中文的Notepad++为:插件\NppExec\Advanved
Options
在Associated
script中分别选择CompilerC和CompilerC++,点击Add/Modify依次添加到Menu items中,期间注意修改Item name。在Menu items中勾选Place to the Macros submenu。
e. 加上快捷键
打开:宏\管理快捷键...。可以看到,已经有了CompilerC和CompilerC++两栏。下一步我们分别为他们设置快捷键F9和F10。
选择Plugin commands,找到我们需要的CompilerC和CompilerC++,Notepad++将大部分快捷键都占用了,但是F9和F10都没有用,这里可以将这两个键用上。
四、使用分析
1. 回到输入cmd
/c "gcc -o $(CURRENT_DIRECTORY)\$(NAME_PART) $(FULL_CURRENT_PATH) && CLS && pushd $(CURRENT_DIRECTORY) && $(NAME_PART).exe"这句话(以CompilerC为例,CompilerC++类似)
这里解释下这句话:用/c的方式打开cmd,调用gcc.exe,输出文件为本文件所在路径下与本文件名同名的exe,输入文件为本文件绝对路径,之后执行CLS命令,之后将工作路径更换到当前路径下,调用与本文件同名的exe文件执行。网上很多有关Notepad++安装配置C/C++编译器的博客都是抄自于一同个人,所以大多都一样,而且不使用。在小布博客中,采用了不一样的命令,带给您不尽的便利。主要修改在于1:$(CURRENT_DIRECTORY)\$(NAME_PART)
将最终生成的可执行文件放在了与main源程序相同的路径下,网上别的方法会将exe生成在Notepad++的安装路径下,这是用户不愿看到的;2:pushd $(CURRENT_DIRECTORY) && $(NAME_PART).exe。将cmd的工作路径更换到当前路径下,并调用生成的可执行文件,如果不更换路径,就会发生在cmd默认路径下远程调用生成的exe,如果程序中需要打开文件、生成文件,路径都需要改为相对于cmd默认路径来,只有将当前cmd路径换到exe本身的路径下,才能更方便的使用。题外话,大家可以尝试用/k的方式打开cmd。
C/C++中有时需要带参数的main。(void main(int args, char *argv[]))。这个参数通过Notepad++怎么传递呢?在我们以上输入中,最后一句话为$(NAME_PART).exe,代表在cmd中调用了一个可执行文件exe,但是没有给参数,如果我们需要传递参数,就需要给在:菜单Plugins\NppExec\Execute中进行设置,将需要的参数添加在$(NAME_PART).exe后面,例如想要使用CompilerC++并添加两个参数,分别是100和1000,只需要在菜单Plugins\NppExec\Execute中选中CompilerC++,并输入cmd
/c "g++ -o $(CURRENT_DIRECTORY)\$(NAME_PART) $(FULL_CURRENT_PATH) && CLS && pushd $(CURRENT_DIRECTORY) && $(NAME_PART).exe 100 1000"。即添加了参数在末尾,以空格隔开。
2.
考虑到源文件中基本上会包含(#include)很多自己写的文件,部分编译器会自动在源文件所在目录下搜索包含的文件,如果您的编译器不会这样做,源文件中包含的自己写的头文件就不能正确的被找到,因为当前工作路径在cmd的默认路径下。为解决这个问题,就需要将pushd动作提前,改为这句话:cmd /c "pushd
$(CURRENT_DIRECTORY) && gcc -o $(NAME_PART) $(FULL_CURRENT_PATH) && $(NAME_PART).exe"。这句话先将工作路径更换到源文件所在的路径,再调用gcc.exe编译源文件,这样工作路径更改了,头文件只要相对于源文件给出相对包含路径就能正确找到了。还是那句话,由于大部分编译器会自动在源文件所在目录下搜索包含的文件,所以这点修改是不必要的,只是针对于比较old的编译器可能会出现这样的问题。
3.
代码都对了,可是编译的时候还是出现问题
由于Notepad++在新建文件的时候默认是采用UTF-8无BOM编码格式,编码这一块小布还是很熟悉的,欢迎讨论,有关编码问题这篇文章写得不错http://www.cnblogs.com/chenwenbiao/archive/2011/08/11/2134503.html。而大部分C/C++编译器需要ANSI编码,所以需要将源文件都转换成ANSI编码。如果您的源文件中出现汉字,就需要进行UTF-8无BOM编码到ANSI编码的转换操作,如果源文件不包含任何汉字,不用转换也可以,因为UTF-8无BOM编码兼容ANSI编码,就是说,纯英文符号的文件,两种编码编出的码是一样的,所以有些人会疑惑,为什么添加了汉字在文件中就不能正确的运行了。因为编码出错了。
可以修改Notepad++创建文本是默认的编码,打开:菜单设置\首选项。在新建中将编码栏选中ANSI就好了。
相关文章推荐
- Effective C++ 条款25 考虑写出一个不抛出异常的swap函数
- 简单的C语言语法-scanf
- C++虚函数和纯虚函数
- CRect::DeflateRect()
- 哈夫曼树 C语言实现 原创下改正
- C语言基础知识之(十五):指针和函数
- C语言基础知识之(十四):指针和字符数组、字符串数组
- C语言基础知识之(十三):指针、指针和数组
- C++程序设计:求最大公约数和最小公倍数的算法
- 编译防火墙——C++的Pimpl惯用法解析
- C++中定义自己的头文件
- int * const p 与int const *p或者const int *p的区别
- 汉字的区码和位码怎么用C语言求出来的方法
- c++ 编译链接 相关【 原创 + 转载】
- 快速排序的C语言实现
- Java基础知识及和C语言的一些区别
- 就一个简单的大数计算
- LeetCode:ZigZag Conversion
- 通过实例浅析Python对比C语言的编程思想差异
- 简要对比C语言中三个用于退出进程的函数