2014-09-10 45 views
0

使用makefile可以在其他目錄中使用頭文件構建程序嗎? 例如,我有一些文件(名爲client.cc),包含:使用其他目錄中的頭文件製作

... 
#include "talk/examples/peerconnection/client/conductor.h" 
#include "talk/examples/peerconnection/client/main_wnd.h" 
... 

這包括在其他目錄。我如何將它添加到我的生成文件? 在這一刻,有我的Makefile,包含:

CXX=arm-none-linux-gnueabi-g++ 
INC=-I/home/footniko/my/webrtcnative/trunk/ 
TARGET=$(shell basename `pwd`) 
SOURCES=$(wildcard *.cc) 
OBJECTS=$(SOURCES:%.cc=%.o) 

all: $(TARGET) 

$(OBJECTS): $(SOURCES) 

$(TARGET): $(OBJECTS) 
    $(CXX) -o $(TARGET) $(LDFLAGS) $(INC) $(OBJECTS) $(LOADLIBES) $(LDLIBS) 

clean: 
    $(RM) $(OBJECTS) $(TARGET) 

.PHONY: all clean 

哪裏/home/footniko/my/webrtcnative/trunk/ - 是我的頭絕對路徑。但是,當我試圖做,有這樣的錯誤:

client.cc:28:59: fatal error: talk/examples/peerconnection/client/conductor.h: No such file or directory 

回答

2

您可以通過CPPFLAGS將被傳遞到預處理器添加目錄,

CPPFLAGS = -I/home/footniko/my/webrtcnative/trunk/ 
+0

'include's由預處理器處理,應該可能是'CPPFLAGS'。 – user657267 2014-09-10 08:38:26

+0

@ user657267是的,'CPPFLAGS'適用於任何事情。但OP是在做C++,所以我只想更具體。 – downhillFromHere 2014-09-10 08:41:56

+2

如果你想具體你應該使用'CPPFLAGS',因爲這是預處理器標誌的正確變量。 'CXXFLAGS'用於將標誌傳遞給C++ *編譯器*,而不是預處理器。確保它在這裏不會有什麼區別,但是如果你有一個使用不同語言的項目並且依賴於隱式規則,或者避免讓閱讀你的Makefile的其他人感到困惑,那麼這是一個很好的習慣,內置變量可以正確使用。 – user657267 2014-09-10 08:49:46

相關問題