windwos vsc+cmake+cpp17&& clion cygwin 支持的说明
序
有生之年第N次搭建C++环境,还是花费了好几个小时
- 20年老司机表示,markdown 写文章,构造段落,真心简单和舒服...
- 搭建失败尽管找老夫帮忙... Q群 1414577 找群主
最终目标
- 做一些C++的轮子
- 编译V8
- 编译OPENJDK8
- 测试C++20的特性
本次用到的软件清单
- win 10 64
- vscode
- clion
- cmake
- gcc
- make
- gdb
- cygwin
- 最好有ke~学上网...
vscode+mingwin(gcc gdb make) + cmake 组合
- 先结论
- VScode写C++ 还是有点弱了,汇编这些都看不了...
- 可能是idea用惯了,总觉的那儿别扭
vscode中的设置
c_cpp_properties.json
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "D:\\minGW64\\mingw64\\bin\\gcc.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
launch.json
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/build/main.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "D:/minGW64/mingw64/bin/gdb.exe",
// "preLaunchTask": "g++",
"preLaunchTask": "buildAll",
// "preLaunchTask": "compile", // task.json 中的 label
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
tasks.json
{
"version": "2.0.0",
// "command": "g++",
// "args": ["-g","${file}","-o","${fileBasenameNoExtension}.exe"],
// "problemMatcher": {
// "owner": "cpp",
// "fileLocation": ["relative", "${workspaceRoot}"],
// "pattern": {
// "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
// "file": 1,
// "line": 2,
// "column": 3,
// "severity": 4,
// "message": 5
// }
// }
"tasks": [
{
"type": "shell",
"label": "buildAll",
"command": "make",
"args": [
],
"options": {
"cwd": "${workspaceRoot}/build"
},
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger.",
"dependsOn":["makeClean"],///指定,在执行buildAll之前,需先执行makeClean
},
{
"type": "shell",
"label": "makeClean",
"command": "make clean",
"args": [
],
"options": {
"cwd": "${workspaceRoot}/build"
},
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
}
clion+cygwin(gcc gdb cmake) 组合
有言在先
- 搞第一个组合时,系统环境配置了mingw的的路径,所以,用cygwin时,这个路径要改掉..
之前mingw的路径配置是 D:\minGW64\mingw64\bin
现在换成这个 D:\AAAA_STORE\small-tools\compile\cygwin\bin
clion 安装
下载
https://www.jetbrains.com/clion/download/other.html
因我在安装的时候还没有能破解更高的版本的工具,所以选择 2021.2.2
破解工具请加Q群下载 1414577
cygwin 安装
下载
https://cygwin.com/install.html
下载 setup-x86_64.exe 这个就行
cygwin安装时选择的软件
- GCC( GNU CompilerCollection , GNU 编译器套件)是由 GNU 开发的编程语言编译器。现已被大多数类 Unix 操作系统(如 Linux、BSD、MacOSX 等)采纳为标准编译器。而 gcc 是 C 编译器;gcc-g++ 是 C++ 编译器
- make 用于在 Linux 中编译和安装程序的工具。
- gdb 是 UNIX 及 UNIX -like下的调试工具。
- binutils 是一组二进制工具集,用于生成目标文件或创建静态连接库之用。
- cmake 是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装或编译过程 。cmake我之前单独装了,所以这儿没有选择。
安装完成后 桌面生成一个Cygwin64 Terminal的图标,启动他进去验证需要的软件的版本
- gcc --version 10.2.0
cygwin安装文件不要删除,后面还需要装其他软件的时候可以继续使用
clion配置cygwin
主要设置,根据cygwin安装目录来
这种网上教程多,自己找下吧。
需要说明的是配置编译器的时候, G++ 要选择 cygwin下的x86_64-w64-mingw32-g++.exe
如果选的是g++.exe 生成EXE无法调试....
如果是C语言的编译器选择
x86_64-w64-mingw32-gcc-10.exe
cmakeLists.txt配置C++20的支持
if(CMAKE_COMPILER_IS_GNUCXX)
add_compile_options(-std=c++20)
message(STATUS "optional:-std=c++20")
endif(CMAKE_COMPILER_IS_GNUCXX)
就目前来看,虽然设置了,编译时参数也自动带上了,但是好像也不行。。。(clion2022.2) 对CPP20语法支持不到位,就算编译成功,代码也会有很多爆红。。没意义。。
谁知道什么版本的CLion支持的话 告诉我一下
windows10配置make命令
https://blog.csdn.net/qq_45467083/article/details/110633407
特别注意的问题
- mingwin 下包含了make程序(mingw32-make) 改成make就可以了...
- cmakeList中设置支持C++20
https://blog.csdn.net/jinzhu1911/article/details/100049201
win上不能断点,修改代码不执行的问题
原因很简单,其实编译出来了,但是在win上缺少相关dll 导致clion运行exe 提前退出。
解决办法 在编译出的exe的目录放上相关dll即可
因为之前装过mingw64..所以这儿有这些DLL 实在找不到的 可以联系我
D:\minGW64\mingw64\bin
cygwin 一直报193错误
https://blog.csdn.net/weixin_43351473/article/details/105026078
-
编译器的选择
这篇文章最后提到的几个x86_64-w64-mingw32-xxx.exe
在clion中 编译EXE时 G++ 要选择 x86_64-w64-mingw32-g++.exe
如果选的是g++.exe 生成EXE无法调试.... -
关于MinGW编译程序出现缺少libgcc_s_dw2-1.dll问题,其实就是改成静态编译就行了,改动的是cmake
https://blog.csdn.net/maoxinwen1/article/details/78594785
https://blog.csdn.net/u013524307/article/details/46485043 -
WIN下控制台乱码的问题 下面代码加进去就行了,如果是跨平台的程序,自己做个环境判断吧
system("cls");
system("color 0A");
//将控制台设置为utf8编码显示
system("chcp 65001");
参考
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。