正如标题所述,我试图在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
隐式地类似于CXXFLAGS
和LDFLAGS
,但基于this它看起来不像&{ #39;可能。
有没有办法使用隐式变量来实现这一点,或者,如果失败了,那么最好的选择是什么?还有什么我做错了吗?
答案 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)