[英]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/”目錄包含:
任何人都可以讓我解開,這讓我發瘋。
這是錯誤的:
%.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.