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

时间:2015-02-02 20:05:24

标签: c++ windows makefile include sdl

正如标题所述,我试图在Windows上使用SDL2创建用于编译C ++程序的makefile。我有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它看起来不像&{ #39;可能。

有没有办法使用隐式变量来实现这一点,或者,如果失败了,那么最好的选择是什么?还有什么我做错了吗?

1 个答案:

答案 0 :(得分:0)

我设法通过将$(INCLFLAGS)移到$(CXXFLAGS)

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

此外,我必须将$(LDFLAGS)移到最后才能正确链接:

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