簡體   English   中英

如何在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 :下的行中。

理想情況下,我想隱式指定類似於CXXFLAGSLDFLAGS 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM