You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows环境下使用Makefile配合GCC编译SDL2项目的正确方法咨询

Windows环境下使用Makefile配合GCC编译SDL2项目的正确方法咨询

我之前一直在Code::Blocks里开发SDL项目,现在想转到VS Code来做开发。之前我的编译经验只停留在单文件、无依赖的简单程序上,比如在终端里执行这样的命令:

C:\...\Hello World>gcc main.c
C:\...\Hello World>a.exe
Hello World!

考虑到项目复杂度提升,我想改用Makefile来管理构建流程,于是通过Chocolatey在Windows上安装了make工具。

一开始我写了个不带SDL依赖的测试Makefile,内容如下:

build:
    gcc -std=c99 ./src/*.c -o helloWorld
run:
    ./helloWorld
clean:
    rm helloWorld

这个测试项目构建运行都很正常,没什么问题。但现在要把SDL2加入项目中,我找不到太多针对Windows环境、用Makefile配置SDL2的有效资源:Linux下只需要加-lSDL2编译选项就行,但Windows上显然行不通;我也看过一些Windows下配置SDL2的教程,但大多是针对Visual Studio的,而且用的是g++,我原本以为它和gcc的语法不一样(后来@HolyBlackCat告诉我gcc和g++的编译选项语法其实是一致的)。

根据g++教程的内容和@HolyBlackCat的建议,我在Makefile的编译命令里加上了-lmingw32 -lSDL2main -lSDL2这些链接选项,现在的Makefile变成了这样:

build:
    gcc -std=c99 ./src/*.c -lmingw32 -lSDL2main -lSDL2 -o raycast
run:
    ./raycast
clean:
    rm raycast

但编译时还是出现了错误:SDL2/SDL.h: No such file or directory。

我从SDL官网的GitHub仓库下载了SDL2-devel-...-mingw.zip压缩包,选的是适配64位系统的版本(x86_64-w64-mingw32)。解压后我把SDL2.dll、include和lib文件夹都放到了项目根目录下,现在我的项目结构是这样的:

raycasting/
├── Makefile
├── src/
│   ├── main.c
│   └── (其他自定义的.c和.h文件)
├── SDL2.dll
├── include/
└── lib/

我也尝试过在编译命令里加上-I include -L lib(之前写错成了-I src/include,其实include文件夹在项目根目录),但还是没能解决头文件找不到的问题。

现在我卡在了如何在Windows环境下,使用GCC配合Makefile正确链接SDL2库这个关键点上,希望能得到相关的指导和解决方案。


内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.07 13:14:51