为什么Gcc在include文件夹中找不到头文件?

问题描述 投票:0回答:1

我正在使用此makefile使用#include <glad/glad.h>在我的main.cpp中包括glad.h〜

CC      := g++
CFLAGS  := -std=c++17 -Wall -Wextra -g

BIN     := bin
SRC     := src
INCLUDE := include
LIB     := lib

LIBRARIES   := -lglad -lglfw3dll

ifeq ($(OS),Windows_NT)
EXECUTABLE  := main.exe
SOURCEDIRS  := $(SRC)
INCLUDEDIRS := $(INCLUDE)
LIBDIRS     := $(LIB)
else
EXECUTABLE  := main
SOURCEDIRS  := $(shell find $(SRC) -type d)
INCLUDEDIRS := $(shell find $(INCLUDE) -type d)
LIBDIRS     := $(shell find $(LIB) -type d)
endif

CINCLUDES   := $(patsubst %,-I%, $(INCLUDEDIRS:%/=%))
CLIBS       := $(patsubst %,-L%, $(LIBDIRS:%/=%))

SOURCES     := $(wildcard $(patsubst %,%/*.cpp, $(SOURCEDIRS)))
OBJECTS     := $(SOURCES:.cpp=.o)

all: $(BIN)/$(EXECUTABLE)

.PHONY: clean
clean:
    -$(RM) $(BIN)/$(EXECUTABLE)
    -$(RM) $(OBJECTS)


run: all
    ./$(BIN)/$(EXECUTABLE)

$(BIN)/$(EXECUTABLE): $(OBJECTS)
    $(CC) $(CFLAGS) $(CINCLUDES) $(CLIBS) $^ -o $@ $(LIBRARIES)


但是每次我收到此错误...

g++    -c -o src/main.o src/main.cpp
src/main.cpp:1:10: fatal error: glad/glad.h: No such file or directory
 #include <glad/glad.h>
          ^~~~~~~~~~~~~
compilation terminated.
mingw32-make: *** [<builtin>: src/main.o] Error 1

每个头文件都存在于include文件夹中,但仍无法正常工作。请帮忙...如何解决这个问题如果make文件中有其他类型的错误,请指出...谢谢。

c++ opengl makefile linker-errors
1个回答
0
投票

问题是make正在调用一个内置规则来将源文件编译为目标文件,但是该规则对CINCLUDES或其他变量一无所知。从documentation ...

正在编译C ++程序

n.o由n.cc,n.cpp或n.C自动制成,配方为格式为“ $(CXX)$(CPPFLAGS)$(CXXFLAGS)-c”。

最简单的解决方案是将$(CINCLUDES)添加到$(CPPFLAGS)

CPPFLAGS += $(CINCLUDES)
© www.soinside.com 2019 - 2024. All rights reserved.