Notepad++使用MinGW gcc编译运行C C++
安装MinGW和Notepad++
安装MinGW
W3Cschool的MinGW安装(Windows) Eclipse搭建C/C++开发环境
- Architecture的选择 : i686 和 x86_64
- i686是32位版 x86_64是64位版
- Threads的选择
- linux,macOS,Unix等系统选择 posix,Windows选择 win32
- Exception的选择
- seh 是新发明的,而 sjlj 则是古老的。seh 性能比较好,但不支持 32位。 sjlj 稳定性好,支持 32位。建议64位操作系统选择seh。
不建议用mingw-w64-install.exe进行安装, 可能出现以下情况
建议用绿色版方式解压安装, 然后指定环境变量 比如window64位可搜索下载 x86_64-8.1.0-release-win32-seh-rt_v6-rev0 解压后将bin目录添加到系统path环境变量
给Notepad++添加运行命令
用g++只编译
cmd /c pushd "$(CURRENT_DIRECTORY)" && g++ -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)"
运行当前文件夹下与源文件同名的.exe
cmd /k pushd "$(CURRENT_DIRECTORY)" && "$(NAME_PART)".exe & PAUSE & EXIT
或者
cmd /k "$(CURRENT_DIRECTORY)\$(NAME_PART).exe" & PAUSE & EXIT
用g++编译为.exe并且运行
将.cpp编译为.exe然后运行, .exe和.cpp在相同目录
cmd /k pushd "$(CURRENT_DIRECTORY)" && g++ -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" && "$(NAME_PART)".exe & PAUSE & EXIT
👆一样👇
cmd /k pushd "$(CURRENT_DIRECTORY)" && g++ -o "$(NAME_PART).exe" "$(FULL_CURRENT_PATH)" && "$(NAME_PART)".exe & PAUSE & EXIT
解释
双引号
双引号是为了使空格也成为字符串
&& 和 &
&& 和& 是 cmd 的两条命令的分隔, 用 && 分隔时 在上一条命令正常执行完才执行下一条命令,出错则不执行下一条 用 & 分隔时会逐条执行
cmd /c , cmd /k , cmd /c start , cmd /k start
- cmd /c ...
- 运行命令且关闭窗口
- cmd /k ...
- 运行命令且不关闭窗口
- cmd /c start ...
- 打开新窗口运行命令 且关闭原窗口
- cmd /k start ...
- 打开新窗口运行命令 且不关闭原窗口
- pushd "$(CURRENT_DIRECTORY)"
- 编译的.exe文件放到当前目录
pushd "$(CURRENT_DIRECTORY)"
改变cmd命令行窗口的当前目录到当前文件的目录
CMD中 Pushd 和 Popd 命令的用法
Pushd和Popd命令,这两个命令一般都是同时使用,意思就是Push和Pop
Pushd 命令 改变当前目录到指定目录,并保存当前的目录在堆栈顶端
Popd 命令 改变当前目录,跳转到堆栈顶端保存的目录,并将堆栈顶端的目录删除 使用 Pushd 命令后,就会将当前目录储存到一个虚拟堆栈中,如果第一次使用 Pushd 命令,该命令所在的目录就会被置于栈底,如再次使用该命令,则第二个目录就会被置于第一个目录之上。 使用 Popd 命令,将当前目录更改为最近由 Pushd 命令存储的目录,并位于堆栈顶端的目录将从堆栈中删除。
g++和gcc的区别
g++和gcc的区别:
1、对于不同后缀的文件当作程序不同。
c后缀的文件,gcc把它当做是C程序;g++当做是C++程序;对于.cpp后缀的文件,gcc和g++都会当做c++程序。
2、编译阶段调用不同,g++会调用gcc;
3、连接阶段方式不同,通常会用g++来完成,这是因为gcc命令不能自动和c++程序使用的库连接。
gcc/g++在执行编译工作的时候,总共需要4步
1.预处理,生成.i的文件[预处理器cpp]
2.将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs]
3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]
4.连接目标代码,生成可执行程序[链接器ld]
gcc或g++ 接 -g -o -c分别是什么意思
-g 可执行程序包含调试信息:加个-g 是为了gdb 用,不然gdb用不到。
-o 指定输出文件名(o:output)-o output_filename,确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out。
-c 只编译不链接:产生.o文件,就是obj文件,不产生执行文件(c : compile)。
gcc filename.c -o filename 上面的意思是如果你不打 -o filename(直接gcc filename.c );那么默认就是输出a.out.这个-o就是用来控制输出文件的。用./a.out 执行文件。
notepad++的全局环境变量
notepad++的全局环境变量| 变量名称 | 说明 | 用法 |
|---|---|---|
| CURRENT_DIRECTORY | 文件所在目录 | $(CURRENT_DIRECTORY) |
| FULL_CURRENT_PATH | 完整文件路径 | $(FULL_CURRENT_PATH) |
| NAME_PART | 不带扩展名后缀的文件名 | $(NAME_PART) |
| FILE_NAME | 带扩展名后缀的文件名 | $(FILE_NAME) |
| EXT_PART | 当前文件的扩展名 | $(EXT_PART) |