[英]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 :
下的行中。
理想情況下,我想隱式指定類似於CXXFLAGS
和LDFLAGS
INCLFLAGS
,但是基於此,它似乎不可能。
有沒有一種使用隱式變量來做到這一點的方法,否則,什么是最好的選擇? 我做錯了什么嗎?
我設法通過將$(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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.