testtraveler

博客园 首页 新随笔 联系 订阅 管理

扩展知识:vscode配置easyx

前言

因为个人用习惯了vscode,对于visual studio的操作只能说相当程度上很不适应,因此,我打算经历一番配置,让vscode可以配置上easyx。

尽管参考了不少博客,但是不是在被踢来踢去的就是搞得特别复杂。不行,只能自己尝试了。

早年写这篇博客逻辑颇有些混乱,现在重写一下,避免造成一些不必要的误解(当然,也因为现在部分设置的步骤同当年不同,有些抽象的坑其实)。

个人的最初动机就是,Visual C++系列太笨重,我不需要。

笔者环境:

Note:

  • 由于笔者现在已经用不到easyx了,故MinGW的配置,没有考虑到可能的后续使用时版本不支持的问题,默认安装此时最新的mingw-w64
  • 假如你不计划看什么踩坑,直接去看Ok-TODO


目录


Try-TODO

尝试不一定能很顺利,不过大体上应该是没问题的,部分遇到问题的部分嘛,就可能在Ok-TODO里面搞定,Ok-TODO就是完全跑通的顺利环节(至少笔者自己的电脑是这样)

开始的话,参照在 CLion、Dev-C++ 或 Code::Blocks 下面配置 EasyX(2025-1-17 更新)所述,首先是下载mingw-w64,然后下载库文件,放库文件。最后加个编译选项。那么就按照这个路子走就是。

具体给vscode下载,其实参照https://code.visualstudio.com/docs/cpp/config-mingw就行,考虑到小白的需要,我也走下流程吧

下载安装mingw-w64并配置系统环境变量

  1. visit mingw-w64

    左边导航栏选择Getting Started,然后选MSYS2 (GCC),毕竟是windows平台

    image

  2. 然后就要下载安装它

    首先visit https://www.msys2.org/

    下载就是

    image

    然后双击我们的exe文件,默认设置next就是(你也可以自己看下官方文档折腾自定义的其他配置,这个坑就不带着踩了),过程似乎有些耗时间,耐心等下

    image

    然后需要运行命令

    pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
    

    至于为什么不用https://www.msys2.org/pacman -S mingw-w64-ucrt-x86_64-gcc​,那是因为跟着https://code.visualstudio.com/docs/cpp/config-mingw走的,运行的时候你会发现toolchain包含了gcc

    image

    然后,default就是(我也不知道哪些可选,毕竟我对此不是十分了解,做不到可能的可选配置,按照官方走就是),回车后输入Y​,等下载安装完成

    image

  3. 设置环境变量(用惯了Linux表示很蛋疼)

    image

    image

    image

    我们要加的路径是C:\msys64\ucrt64\bin​(如果你自定义了下载路径,按你自己的来)

    image

    然后点一堆确定就是

  4. 打开cmd看下

    image

  5. 打开vscode看下

    image

    image

确定安装没毛病,折腾easyx吧


安装easyx

基本上,任何开发环境配置 easyx for mingw 都只需两步:

  1. 安装库文件

下载的压缩包先解压缩,然后将 include 下的头文件和 lib32/lib64 下的库文件,分别拷贝到 MinGW 的头文件和库文件中。如果不确定具体的库文件路径,参考本文末尾的 QA 部分。

  1. 增加编译时的链接选项

链接选项增加:-leasyx,或者在 CMakeLists.txt 里面增加相关的链接命令:target_link_libraries(编译目标 libeasyx.a),这样可以在编译的时候链接 libeasyx.a 库文件。每个项目都要这样设置一次,然后编译即可。

image

如果说那你需要不同版本的easyx,一般来说唯一的办法就是安装·Visual C++,然后去人家的lib里面扒拉库文件,你可以参考下面的寻找

关键在于,首先,我们需要easyx的头文件,以及easyx头文件所对应的函数实现。让我们找到它。我的visual studio是2022版。

  • lib(静态链接库):

    • C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\lib\x86

      • EasyXa.lib
      • EasyXw.lib
    • C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\lib\x64

      • EasyXa.lib
      • EasyXw.lib
  • h(头文件)

    • C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include

      • easyx.h
      • graphics.h

找到它们后,先把它们放到一个文件夹里面备用。

image

image

image

image

不过为了方便起见。用人家https://codebus.cn/bestans/easyx-for-mingw提供的就是

image

解压后看下readme

image

MinGW的头文件和库文件文件夹是哪里呢,查找一下(ctrl+左键点击)

image

很好,头文件都在C:\msys64\ucrt64\include​下

头文件放过去

image

库文件,就是所谓.a​文件,需要放到lib​去,你可以了解一下什么是.a​文件:以.a(a为后缀)的文件类型是啥鸭?_.a文件-CSDN博客|linux c下的c文件 h文件 o文件 so文件 a文件 可执行文件 gcc使用

由于开发环境是64位(你是否发现我们路径也好,其他啥也好,都是64位的呢),那么放64位的.a

image

库文件和头文件搞定,接下来就是搞编译选项了


编译选项

我不知道你是否用过gcc xx -o xx​之类的命令,本质上来说,所谓的IDE能完成点一下就能编译运行,就是把命令整个命令需要的参数通过某个文件设置好了。

对于我们的vscode来说,就是.vscode​下的文件起这个作用,首先需要找到这个库,再然后需要链接这个库,于是,一个需要添加搜索路径,另一个需要确定-l​链接的库,这个工作在.vscode/tasks.json​中完成

参考如下

看了后你应该就明白为什么是-leasyx​了

仅仅需要指定一下我们的库文件搜索路径目录,然后添加编译选项leasyx​即可(对不起,我真的不想用什么cl​,也不想用什么shell​诸如此类的东西,能简简单单搞定的事情就不要搞太复杂QWQ)

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe 生成活动文件",
            "command": "C:\\msys64\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "-L",  // 在库文件的搜索路径列表中添加dir目录,
                "C:\\msys64\\mingw64\\lib",
                "-leasyx"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
    ],
    "version": "2.0.0"
}

demo代码如下:

#include <graphics.h>
#include <conio.h>

int main()
{
    initgraph(800, 600);

    // 按任意键退出
	_getch();
	closegraph();
    return 0;
}

踩坑并解决

然后出事了

C:/msys64/ucrt64/bin/../lib/gcc/x86_64-w64-mingw32/15.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\msys64\ucrt64\lib/libeasyx.a(EasyX.GraphWnd.o):EasyX.GraphWnd.cpp:(.text+0x198c): undefined reference to `__imp___iob_func'

于是想到说,应该是MinGW版本的问题,怎么做呢,进入到pacman环节

首先打开mingw64.exe​,看下有哪些仓库

pacman -Slq | grep '^mingw-w64'

可以注意到,除了mingw-w64-ucrt-x86_64​,还有mingw-w64-x86_64​,mingw-w64-clang-x86_64​,mingw-w64-cross

那么,我们用mingw-w64-x86_64​看看吧

 pacman -S --needed base-devel mingw-w64-x86_64-toolchain

依然回车输个Y

然后是老生常谈系统环境变量,添加C:\msys64\mingw64\bin​,上移到此前设置的C:\msys64\ucrt64\bin​,检查一下是否切换完成

image

最好重新弄个文件夹放我们的demo.cpp和1.cpp

然后

tasks.json

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",
            "command": "C:\\msys64\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

运行一下

#include<iostream>

int main(void)
{
    std::cout<<"hello world"<<std::endl;
    return 0;
}

image

然后继续乾坤大挪移,放库文件和头文件

头文件->C:\msys64\mingw64\include

库文件->C:\msys64\mingw64\lib

修改tasks.json

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",
            "command": "C:\\msys64\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "-L",  // 在库文件的搜索路径列表中添加dir目录
                "C:\\msys64\\mingw64\\lib",
                "-leasyx"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}

运行demo

#include <graphics.h>
#include <conio.h>

int main()
{
    initgraph(800, 600);

    // 在控制台按任意键退出
	_getch();
	closegraph();
    return 0;
}

image

搞定。

Ok-TODO

下载安装mingw-w64并配置系统环境变量

  1. visit mingw-w64

    左边导航栏选择Getting Started,然后选MSYS2 (GCC),毕竟是windows平台

    image

  2. 然后就要下载安装它

    首先visit https://www.msys2.org/

    下载就是

    image

    然后双击我们的exe文件,默认设置next就是(你也可以自己看下官方文档折腾自定义的其他配置,这个坑就不带着踩了),过程似乎有些耗时间,耐心等下

    image

    我们实际需要打开的应该是C:\msys64\mingw64.exe​,然后需要运行命令

     pacman -S --needed base-devel mingw-w64-x86_64-toolchain
    

    image

    然后,default就是,回车后输入Y​,等下载安装完成

    image

  3. 设置环境变量(用惯了Linux表示很蛋疼)

    image

    image

    image

    我们要加的路径是C:\msys64\mingw64\bin​(如果你自定义了下载路径,按你自己的来)

    image

    然后点一堆确定就是

  4. 打开cmd看下

    image

  5. 打开vscode看下

    image

    image


安装easyx

基本上,任何开发环境配置 easyx for mingw 都只需两步:

  1. 安装库文件

下载的压缩包先解压缩,然后将 include 下的头文件和 lib32/lib64 下的库文件,分别拷贝到 MinGW 的头文件和库文件中。如果不确定具体的库文件路径,参考本文末尾的 QA 部分。

  1. 增加编译时的链接选项

链接选项增加:-leasyx,或者在 CMakeLists.txt 里面增加相关的链接命令:target_link_libraries(编译目标 libeasyx.a),这样可以在编译的时候链接 libeasyx.a 库文件。每个项目都要这样设置一次,然后编译即可。

image

如果说那你需要不同版本的easyx,一般来说唯一的办法就是安装·Visual C++,然后去人家的lib里面扒拉库文件,你可以参考下面的寻找

关键在于,首先,我们需要easyx的头文件,以及easyx头文件所对应的函数实现。让我们找到它。我的visual studio是2022版。

  • lib(静态链接库):

    • C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\lib\x86

      • EasyXa.lib
      • EasyXw.lib
    • C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\lib\x64

      • EasyXa.lib
      • EasyXw.lib
  • h(头文件)

    • C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\VS\include

      • easyx.h
      • graphics.h

找到它们后,先把它们放到一个文件夹里面备用。

image

image

image

image

不过为了方便起见。用人家https://codebus.cn/bestans/easyx-for-mingw提供的就是

image

解压后看下readme

image

MinGW的头文件和库文件文件夹是哪里呢,当然是C:\msys64\mingw64\include​和C:\msys64\mingw64\lib

需要做的是

easyx4mingw_20240601\include​的easyx.h​和graphics.h​->C:\msys64\mingw64\include

easyx4mingw_20240601\lib64\libeasyx.a​->C:\msys64\mingw64\lib


编译选项

修改.\vscode\tasks.json​,添加搜索和链接参数

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",
            "command": "C:\\msys64\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe",
                "-L",  // 在库文件的搜索路径列表中添加dir目录
                "C:\\msys64\\mingw64\\lib",
                "-leasyx"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ],
    "version": "2.0.0"
}


运行demo

运行demo

#include <graphics.h>
#include <conio.h>

int main()
{
    initgraph(800, 600);

    // 在控制台按任意键退出
	_getch();
	closegraph();
    return 0;
}

image

搞定!

参考资料

easyx:

gcc:

posted on 2024-02-20 18:57  testtraveler  阅读(2317)  评论(0)    收藏  举报