13

是否可以指示g++递归搜索文件夹中的头文件?在我的示例中,我希望g++进行搜索

/ARDrone_SDK_2_0_1/ARDroneLib/Soft/

以及头文件的所有子目录。这可以做到吗?这是一个简单的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 $@

.cpp.o:
    $(CC) $(CFLAGS) $(INCDIRS) $< -o $@
4

1 回答 1

14

这个问题有点令人困惑,因为您将两种不同的工具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++编译行。

于 2013-11-02T04:37:15.993 回答