2013-11-02 164 views
4

是否可以指示g ++以遞歸方式搜索文件夾中的頭文件?在我的例子,我想G ++搜索我可以搜索目錄和子目錄的頭文件嗎?

/ARDrone_SDK_2_0_1/ARDroneLib /柔和/

及其所有子目錄中的頭文件。這可以做到嗎?下面是一個簡單Makefile例如:

C=g++ 
CFLAGS=-c -Wall 
LDFLAGS= 
INC1=/ARDrone_SDK_2_0_1/ARDroneLib/Soft/ <- can this be recursive? 
INCDIRS= -I${INC1} 
SOURCES=src/dronevid.cpp 
OBJECTS=$(SOURCES:.cpp=.o) 
EXECUTABLE=build/dronevid 

all: $(SOURCES) $(EXECUTABLE) 

$(EXECUTABLE): $(OBJECTS) 
    $(CC) $(LDFLAGS) $(OBJECTS) -o [email protected] 

.cpp.o: 
    $(CC) $(CFLAGS) $(INCDIRS) $< -o [email protected] 

回答

6

的問題是有點混亂,因爲你混爲一談兩種不同的工具,makeg++

無法獲得g++搜索給定目錄的所有子目錄。您要用來查找包含文件的每個目錄都必須在命令行上用-I標誌分別指定。

如果你願意,你可以得到make來構建這些參數並將它們放在命令行中。假設你正在使用GNU make和支持find命令UNIX類系統,你可以做這樣的事情:

INCDIRS := $(addprefix -I,$(shell find /ARDrone_SDK_2_0_1/ARDroneLib/Soft -type d -print)) 

我應該說的前期,這是不是一個真正的好主意。您不知道這些目錄將顯示在什麼順序,並且您不知道在不同目錄中是否存在可能導致問題的同一頭文件的多個副本。

一般來說,子目錄中的標題預期能夠起作用,即將頂級目錄添加到編譯行中,然後在代碼中使用#include行中的相對路徑。喜歡的東西:

#include <subdir/subsubdir/header.h> 

然後加:

-I/top/level/dir 

g++編譯行。

+0

好的。這就說得通了。謝謝。 – Nick