如何在 Windows 上为 SDL2/C++ 创建一个 makefile?

How do I create a makefile for SDL2/C++ on Windows?

如标题所述,我正在尝试创建一个 makefile,用于在 Windows 上使用 SDL2 编译 C++ 程序。我安装了 MinGW 并且可以正常工作。我使用 Sublime 2 作为我的环境。这是我目前所拥有的:

CXX = g++
CXXFLAGS = -std=c++0x -g -O3 -w -Wl,-subsystem,windows
INCLFLAGS = -IC:\Libraries\i686-w64-mingw32\include\SDL2
LDFLAGS = -LC:\Libraries\i686-w64-mingw32\lib -lmingw32 -lSDL2main -lSDL2
OBJECTS = main.o
TARGET = 1_hellosdl

$(TARGET) : $(OBJECTS)
    $(CXX) $(INCLFLAGS) $(LDFLAGS) $(CXXFLAGS) -o $(TARGET) $(OBJECTS)

main.o :

clean:
    rm -rf $(OBJECTS) $(TARGET)

remake:
    clean $(TARGET)

现在当我编译时出现以下错误:

g++ -std=c++0x -g -O3 -w -Wl,-subsystems,windows   -c -o main.o main.cpp
In file included from main.cpp:1:0:
main.hpp:4:17: fatal error: SDL.h: No such file or directory
 #include <SDL.h>

所以问题是 g++ 在尝试编译 main.cpp 时找不到 SDL 包含文件。我知道这是因为 $(INCLFLAGS) 没有被添加到 main.o :.

下的行中

最理想的是,我想指定 INCLFLAGS 隐含地类似于 CXXFLAGSLDFLAGS,但基于 this 它看起来不太可能。

有没有办法使用隐式变量来做到这一点,或者如果做不到,最好的选择是什么?我还有什么地方做错了吗?

我设法通过将 $(INCLFLAGS) 移动到 $(CXXFLAGS) 来解决这个问题:

INCLFLAGS = -IC:\Libraries\i686-w64-mingw32\include\SDL2
CXXFLAGS = $(INCLFLAGS) -std=c++0x -g -O3 -w -Wl,-subsystem,windows

此外,我必须将 $(LDFLAGS) 移动到末尾才能使其正确 link:

$(TARGET) : $(OBJECTS)
    $(CXX) $(CXXFLAGS) -o $(TARGET) $(OBJECTS) $(LDFLAGS)