2011-05-01 120 views
-1

簡單地說:這不是找到包含路徑:我的makefile文件是不是找到我的include路徑

CC = g++ 
OBJS = *.o #*/*.o 

DEBUG = -g 
PNAME = game 
INCLUDES = -Iheaders 

CFLAGS = -Wall $(DEBUG) 
LFLAGS = -Wall -lsfml-graphics -lsfml-window -lsfml-system $(DEBUG) 

all: build 

build: $(OBJS) 
    $(CC) $(LFLAGS) $(OBJS) -o $(PNAME) 

clean: 
    \rm *.o *~ $(PNAME) 

.cpp: 
    $(CC) $(CFLAGS) $(INCLUDES) -c $(.SOURCE) 
+3

Makefile中並沒有對包括路徑任何東西。我認爲你的意思是*編譯器*沒有找到包含路徑......你從編譯器得到的錯誤信息是什麼? – 2011-05-01 23:58:08

回答

5

你的Makefile小艾打破了我。首先,你可能想:

OBJS = $(patsubst %.cpp,%.o,$(wildcard *.cpp)) 

其次,您的最終規則需要更多的東西,如:

%.o: %.cpp 
    $(CC) $(CFLAGS) $(INCLUDES) -c $^ -o [email protected] 
+0

複雜的makefile不是我的專長。 – 2011-05-02 00:07:57

+0

@Mike:爲了澄清,'OBJS = * .o'字面上貼着字符串'* .o',處處顯示$(OBJS)';這很少是你想要的。上述版本將'OBJS'的值設置爲所有.cpp文件的列表,後綴由.o替換(請記住目標文件尚不存在,因此您無法搜索它們!)。修改後的規則表示如何從其相應的.cpp文件構建任何.o文件。 '$ ^'和'$ @'是分別解析到依賴關係(即.cpp)和目標(即.o)的特殊變量。 – 2011-05-02 00:14:04

+0

我知道makefile中的宏的本質,而不是後者。謝謝。 – 2011-05-02 04:24:41

相關問題