Notepad++使用MinGW gcc编译运行C C++

502 阅读1分钟

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)