gpt4 book ai didi

c++ - 查找所有子目录下的所有头文件

转载 作者:太空宇宙 更新时间:2023-11-04 06:52:54 26 4
gpt4 key购买 nike

我正在尝试使用我的 include 中的任何标题我的 src 中任何源文件中的文件夹文件夹。现在,我正在做 "#include ../../include/subfolder/file.h"#include "../include/otherfile.h"访问我的头文件,但这非常冗长,而且每当我进行目录重组时,我都必须返回并更改对受影响的头文件的每个引用。我想能够做到 #include "file.h"来自任何源文件,但我似乎做不到。做-Iinclude-Iinclude/subfolder 中找不到标题因为某些原因。将我的包含语句更改为 #include <file.h>也不起作用。我该怎么做才能解决这个问题?

我有一个如下所示的项目布局:

Makefile

include
subfolder
file.h
otherfile.h

src
subfolder
file.c
otherfile.c

我的 Makefile 看起来像这样:

TARGET = program
LIBS = -llibs
CC = gcc
CFLAGS = -Wall -g -Iinclude/

.PHONY: default all clean

default: $(TARGET)
all: default

OBJECTS = $(patsubst %.c, %.o, $(shell find . -name '*.c'))
HEADERS = $(shell find . -name '*.h')

%.o: %.c $(HEADERS)
$(CC) $(CFLAGS) -c $< -o $@

.PRECIOUS: $(TARGET) $(OBJECTS)

$(TARGET): $(OBJECTS)
$(CC) $(OBJECTS) -Wall $(LIBS) -o $@

clean:
find . -type f -name '*.o' -exec rm {} +
find . -type f -name $(TARGET) -exec rm {} +

最佳答案

简单,就用

#include <myheader.h>

并通过-I开关将相关目录传递给编译器。

例如,如果 myheader.hinclude/subfolder 中,那么,

$(CC) -Iinclude/subfolder

会起作用。

请注意,您还必须包括 -I 参数中的子文件夹,因为只扫描顶级目录的 header 。

关于c++ - 查找所有子目录下的所有头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48673829/

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