gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 18:28:18 24 4
gpt4 key购买 nike

是否可以指示 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 $@

最佳答案

这个问题有点令人困惑,因为您混淆了两种不同的工具,makeg++

无法让 g++ 搜索给定目录的所有子目录。您要用于查找包含文件的每个目录都必须在命令行上使用 -I 标志单独指定。

如果你愿意,你可以让 make 构造这些参数并将它们放在你的命令行上。假设您正在使用 GNU make 和支持 find 命令的类 UNIX 系统,您可以执行如下操作:

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

我应该直接说,这不是一个好主意。您不知道这些目录将以什么顺序显示,也不知道不同目录中是否存在同一头文件的多个拷贝可能会导致问题。

一般来说,子目录中的 header 的工作方式是将顶级目录添加到编译行,然后在代码的 #include 行中使用相对路径。像这样的东西:

#include <subdir/subsubdir/header.h>

然后添加:

-I/top/level/dir

g++ 编译行。

关于c++ - 我可以在目录和子目录中搜索头文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19738956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com