Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我可以在目录和子目录中搜索头文件吗?_C++_C_Gcc_Makefile - Fatal编程技术网

C++ 我可以在目录和子目录中搜索头文件吗?

C++ 我可以在目录和子目录中搜索头文件吗?,c++,c,gcc,makefile,C++,C,Gcc,Makefile,是否可以指示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/dron

是否可以指示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 $@
C=g++
CFLAGS=-c-墙
LDFLAGS=

INC1=/ARDrone\u SDK\u 2\u 0\u 1/ARDroneLib/Soft/这个问题有点让人困惑,因为你把两个不同的工具混为一谈,
make
g++

无法获取
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>

g++
编译行。

Ok。这是有道理的。谢谢。我让它自动工作,请看这里:
-I/top/level/dir