在MSYS2上配置SDL2

安装GCC

MSYS2中有两种工具链:一种是原生GCC,其编译的是UNIX代码,运行依赖msys2xxx.dll;另一种是mingw工具链,用于编译windows代码(能调用windows API,不能调用unix系统调用)的,生成exe,运行时只依赖windows系统的dll。

因此,我们这里应该安装mingw工具链。

输入命令:

pacman -Ss gcc

找到里面有一个长得像这样的gcc:

mingw64/mingw-w64-x86_64-gcc 9.2.0-2 (mingw-w64-x86_64-toolchain)
    GNU Compiler Collection (C,C++,OpenMP) for MinGW-w64

然后安装:

pacman -S mingw-w64-x86_64-gcc
设置环境变量

我的MSYS2安装目录为C:\ProgramFiles\msys64,这里的路径根据自己实际安装路径修改:

右键此电脑->高级系统设置->高级->环境变量(N)...

选中Path那一行,点击编辑(I)...,在最后一行加入MSYS2中mingw64的bin文件夹路径,例如我的是C:\ProgramFiles\msys64\mingw64\bin

系统变量(S)对应的区域点击新建(W)...,变量名填C_INCLUDEDE_PATH,值填MSYS2中mingw64的include文件夹,例如我的是C:\ProgramFiles\msys64\mingw64\include

系统变量(S)对应的区域点击新建(W)...,变量名填CPLUS_INCLUDE_PATH,值填MSYS2中mingw64的include文件夹以及里面c++文件夹中gcc版本号的文件夹,例如我的是C:\ProgramFiles\msys64\mingw64\include;C:\ProgramFiles\msys64\mingw64\include\c++\9.2.0

系统变量(S)对应的区域点击新建(W)...,变量名填LIBRARY_PATH,值填MSYS2中mingw64的lib文件夹,例如我的是C:\ProgramFiles\msys64\mingw64\lib

安装 SDL

输入命令:

pacman -Ss sdl2

其中有一个长得像这样的:

mingw64/mingw-w64-x86_64-SDL2 2.0.10-1
    A library for portable low-level access to a video framebuffer, audio
    output, mouse, and keyboard (Version 2) (mingw-w64)

安装:

pacman -S mingw-w64-x86_64-SDL2

发现还有一些其它模块,可以按需安装:

mingw64/mingw-w64-x86_64-SDL2_gfx 1.0.4-1
    SDL graphics drawing primitives and other support functions (Version 2)
    (mingw-w64)
mingw64/mingw-w64-x86_64-SDL2_image 2.0.5-1
    A simple library to load images of various formats as SDL surfaces (Version
    2) (mingw-w64)
mingw64/mingw-w64-x86_64-SDL2_mixer 2.0.4-1
    A simple multi-channel audio mixer (Version 2) (mingw-w64)
mingw64/mingw-w64-x86_64-SDL2_net 2.0.1-1
    A small sample cross-platform networking library (Version 2) (mingw-w64)
mingw64/mingw-w64-x86_64-SDL2_ttf 2.0.15-1
    A library that allows you to use TrueType fonts in your SDL applications
    (Version 2) (mingw-w64)
mingw64/mingw-w64-x86_64-smpeg2 2.0.0-5
    SDL2 MPEG Player Library (mingw-w64)

测试

将以下代码存为a.cpp

#include<SDL.h>

SDL_Window *g_pWindow = nullptr;
SDL_Renderer *g_pRenderer = nullptr;

int main(int argc, char *args[]){
    // initialize SDL
    if(SDL_Init(SDL_INIT_EVERYTHING) >= 0){
        // if succeeded create our window
        g_pWindow = SDL_CreateWindow("Chapter 1: Setting up SDL",
        SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
        640, 480,
        SDL_WINDOW_SHOWN);

        // if the window creation succeeded create our renderer
        if(g_pWindow != nullptr){
            g_pRenderer = SDL_CreateRenderer(g_pWindow, -1, 0);
        }
    }else{
        return 1;   // SDL could not initialize
    }

    // everything succeeded lets draw the window

    // set to black // This function expects Red, Green, Blue and Alpha as color values
    SDL_SetRenderDrawColor(g_pRenderer, 255, 0, 0, 255);

    // clear the window to black
    SDL_RenderClear(g_pRenderer);

    // show the window
    SDL_RenderPresent(g_pRenderer);

    // set a delay before quitting
    SDL_Delay(5000);

    // clean up SDL
    SDL_Quit();

    return 0;
}

编译用以下命令,这里我的SDL库的位置在C:\ProgramFiles\msys64\mingw64\include\SDL2:,这里用的是反斜杠而不是斜杠:

g++ a.cpp -o a.exe -lmingw32 -mwindows -lSDL2main -lSDL2 -I/C/ProgramFiles/msys64/mingw64/include/SDL2

之后运行:

./a.exe

屏幕上应该会出现一个红色的方框,持续5秒后自动关闭。

参考资料:
关于MSYS2的一点经验
msys2和SDL2环境搭建

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值