0. 前言
Devcpp自带的GCC虽说是14年发布的4.9.2版的,但怎么说也还是太旧了,C++17完全不能支持。
所以还是打算自行下载新版本的GCC,配置到Devcpp里来编译。
1. 环境
我下载的GCC放在C:\Program Files\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64里。
Devcpp自带的GCC放在Devcpp安装目录下的MinGW64里。
在Devcpp里配置一个编译器需要下面这些信息(x64):
1.1 程序
- bin
- x86_64-w64-mingw32\bin
1.2 C头文件
- include
- x86_64-w64-mingw32\include
- lib\gcc\x86_64-w64-mingw32\4.9.2\include
1.3 C++头文件
- include
- x86_64-w64-mingw32\include
- lib\gcc\x86_64-w64-mingw32\4.9.2\include
- lib\gcc\x86_64-w64-mingw32\4.9.2\include\c++
1.4 链接库
- lib
- x86_64-w64-mingw32\lib
2. 配置
在Devcpp添加编译器还是很方便的(flag):
- 按
Alt T C
打开编译器选项 - 添加编译器选项
- 在程序选项页设置编译套件的程序名
- 在目录里设置编译套件的路径和环境
然后就搞定了!(flag)
3. 问题
再次启动Devcpp时,会提示找不到库,编译套件的各程序。
虽然选否的话,可以继续没问题地使用,但是每次都要点的话就很难受。
4. 侦查
Devcpp的编译器的各种设置保存在%APPDATA%\Dev-Cpp\devcpp.ini里,明显[CompilerSets]保存的就是各个编译器设置的名称,[CompilerSets_%d]里保存的就是各个编译器的具体设置。
预设的编译器选项的Libs
为
%path%\MinGW64\bin;%path%\MinGW64\x86_64-w64-mingw32\bin
&esmp;这个路径肯定肯定是没有问题的,那我新设置的编译器的Libs
呢?可以发现被加上了引号。
"C:\Program Files\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin";"C:\Program Files\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\x86_64-w64-mingw32\bin"
启动Devcpp,可以发现提示错误
下面路径 二进制 不存在:
C:\Program Files\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin"
"C:\Program Files\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\x86_64-w64-mingw32\bin
下面的二进制目录已被搜索:
C:\Program Files\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin";"C:\Program Files\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\x86_64-w64-mingw32\bin
按Alt T C
查看路径设置,可以发现所有路径都混合成一条
C:\Program Files\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin";"C:\Program Files\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\x86_64-w64-mingw32\bin
明显是引号读取错误了。(拔flag)需要用其他路径,使得此处不会出现引号,以防引号读取错误。
5. 解决
手动在ini
中将双引号删除掉后再次启动Devcpp,可以发现错误提示消失了!(再插flag)
再次启动Devcpp可以发现错误提示又回来了。
经测试发现,Devcpp在启动和退出时都会读取这个文件,并自动格式化后重新保存这个配置文件。在这之后,原本手动删掉的双引号又回来了。(神tm)
尝试用%ProgramFiles%代替"C:\Program Files",然而无效。不过注意到其他编译选项里用的是%Path%的“环境变量”,所以这里的%var%应该是内部变量,而非系统环境变量。
最后用短目录名完美解决该问题。
即用"PROGRA~1"代替"Program Files"。