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

特别注意的问题

win上不能断点,修改代码不执行的问题

原因很简单,其实编译出来了,但是在win上缺少相关dll 导致clion运行exe 提前退出。
解决办法 在编译出的exe的目录放上相关dll即可

因为之前装过mingw64..所以这儿有这些DLL 实在找不到的 可以联系我
D:\minGW64\mingw64\bin

cygwin 一直报193错误

https://blog.csdn.net/weixin_43351473/article/details/105026078

    system("cls");
    system("color 0A");
    //将控制台设置为utf8编码显示
    system("chcp 65001");

参考

posted @ 2021-12-04 09:32  方东信  阅读(362)  评论(0编辑  收藏  举报