c语言基于SDL2游戏开发-第1讲环境搭建

开发编辑器

采用vscode进行开发,安装c/c++插件。

编译环境

安装MinGW,然后安装gcc,g++,autoconf,automake,gdb等常用工具。 然后将目录配置到环境变量中。

SDL2库安装

官网下载开发包,https://www.libsdl.org/

下载解压,使用其中的32位环境包。

然后将里面的内容分别复制到MinGW的目录对应文件夹下面。

其中的bin中的dll复制到c盘windows/system32文件夹下。

配置编译调试

打开vscode,选择一个文件夹作为项目目录,然后选择调试,选择c++(GDB/LLDB),然后它就会在项目中创建一个.vscode文件夹,里面会创建一个launch.json文件,配置这个文件。

配置如下:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\MinGW\bin\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask":"build c"
        }
    ]
}

preLaunchTask: 表示我们在调试之前执行的任务 MIMode: 表示调试方式 miDebuggerPath: 表示gdb路径 program: 表示当前路径的文件为调试文件

配置如下:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "msbuild",
            "args": [
                // Ask msbuild to generate full paths for file names.
                "/property:GenerateFullPaths=true",
                "/t:build",
                // Do not generate summary otherwise it leads to duplicate errors in Problems panel
                "/consoleloggerparameters:NoSummary"
            ],
            "group": "build",
            "presentation": {
                // Reveal the output only if unrecognized errors occur.
                "reveal": "silent"
            },
            // Use the standard MS compiler pattern to detect errors, warnings and infos
            "problemMatcher": "$msCompile"
        },

        {
            "type": "shell",
            "label": "build c",
            "command": "D:/MinGW/bin/gcc.exe",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}.exe",
                "-lmingw32",
                "-lSDL2main",
                "-lSDL2"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

上面的哪个task是它自动生成的,我们不用去管,在它下面添加一个task,配置如我们写的那样。

command为我们gcc的路径,args为我们编译调试的参数。

注意事项

gcc中关于sdl的开发需要配置-l 参数,就是配置lib,这里要注意它的顺序不能有误,也就是在命令行中的顺序为:

gcc -o main.exe main.c -lmingw32 -lSDL2main -lSDL2

调试的时候,一定要选择主文件也就是含有main函数的文件进行调试,否则会出现找不到入口。