簡體   English   中英

SFML 庫不與 makefile 編譯鏈接

[英]SFML library doesn't link with makefile compilation

我一直在嘗試將 SFML dll 鏈接到我的 windows C++ 項目,但我無法讓它工作。 我總是以:

fatal error: SFML/System.hpp: No such file or directory

我已經嘗試了很多東西,但沒有任何改變。 這是我的 makefile:

PROGRAM   = zero_flip
OBJS      = src/main.o src/Math.o src/card.o src/game_board.o src/indicator.o src/ui.o

CXX       = g++
CXX_FLAGS = -O0 -g -Wall -Wextra -Wno-unused-parameter -Wno-unused-variable

LIB_DIRS  = -L./Resources/libs/
LIBS      = -lsfml-system -lsfml-graphics -lsfml-window -lsfml-audio
LNK_FLAGS = $(LIB_DIRS) $(LIBS)

DEPS=$(OBJS:.o=.d)

.PHONY: all clean

all: $(PROGRAM)

-include $(DEPS)

%.o: %.cpp
    $(CXX) $(CXX_FLAGS) $(LNK_FLAGS) $< -o $@

$(PROGRAM): $(OBJS)
    $(CXX) $(CXX_FLAGS) $(LNK_FLAGS) $^ -o $@

clean:
    rm -f $(OBJS) $(DEPS) $(PROGRAM) && clear

“./Resources/libs/”目錄包含:

  • openal32.dll
  • sfml-audio-2.dll
  • sfml-audio-d-2.dll
  • sfml-graphics-2.dll
  • sfml-graphics-d-2.dll
  • sfml-system-2.dll
  • sfml-系統-d-2.dll
  • sfml-window-2.dll
  • sfml-window-d-2.dll

任何人都可以讓我解開,這讓我發瘋。

這是錯誤的:

%.o: %.cpp
        $(CXX) $(CXX_FLAGS) $(LNK_FLAGS) $< -o $@

這條規則說它將源文件編譯成 object 文件,但配方實際上構建了一個完整的可執行文件:它將編譯源文件,如xxx.cpp ,然后將其鏈接到名為xxx.o程序中。 您只需要在此處調用編譯器,而不是 linker,因此您不應該有$(LNK_FLAGS)並且您需要添加-c選項來告訴編譯器在編譯后停止而不是鏈接。

然后,您需要在編譯行中添加一個-I選項,告訴編譯器在哪里可以找到編譯期間所需的 header 文件......在這種情況下為SFML/System.hpp

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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