zoukankan      html  css  js  c++  java
  • 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

    这种网上教程多,自己找下吧。
    需要说明的是配置编译器的时候, G++ 要选择 cygwin下的x86_64-w64-mingw32-g++.exe
    如果选的是g++.exe 生成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)
    
    

    就目前来看,虽然设置了,编译时参数也自动带上了,但是好像也不行。。。

    windows10配置make命令

    https://blog.csdn.net/qq_45467083/article/details/110633407

    特别注意的问题

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

    参考

    博主教你手撸JVM 开源项目
    https://github.com/anons-org/nada
    https://gitee.com/grateful/nada
    博主长期对外收徒,欢迎咨询。
    《编程语言设计和实现》《MUD游戏开发》《软件破解和加密》《游戏辅助外挂》《JAVA开发》 以上课程非诚勿扰!



    =================================
    QQ:184377367
    GOLang Q1群:6848027
    GOLang Q2群:450509103
    C/C++/QT群 1414577
    单片机嵌入式/电子电路入门群群 306312845
    MUD/LIB/巫师交流群 391486684
    java/springboot/hadoop/JVM 群 4915800
    WEB前端开发交流群/nodejs/ 214737701
    操作系统研发群:15375777
    汇编/辅助/破解新手群:755783453
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    2015第46周六
    2015年第46周五
    2015第46周四
    2015第46周三
    自己写shell命令pwd
    IOS成长之路-Nsstring搜索方法rangeOfString
    【Nginx】epoll事件驱动模块
    深入了解回调函数Java
    VS2008下直接安装Boost库1.46.1版本号
    oracle在schema是什么意思?
  • 原文地址:https://www.cnblogs.com/cfas/p/15640982.html
Copyright © 2011-2022 走看看