【发布时间】:2024-04-18 21:00:04
【问题描述】:
我正在尝试在我的src 文件夹中的任何源文件中使用我的include 文件夹中的任何标题。现在,我正在使用"#include ../../include/subfolder/file.h" 或#include "../include/otherfile.h" 来访问我的头文件,但这非常冗长,而且每当我进行目录重组时,我都必须返回并更改对受影响头文件的每个引用。我希望能够从任何源文件中执行#include "file.h",但我似乎做不到。由于某种原因,执行-Iinclude 或-Iinclude/ 在subfolder 中找不到标题。将我的 include 语句更改为 #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 {} +
【问题讨论】: