簡體   English   中英

為什么 GCC 在包含文件夾中找不到 header 文件?

[英]Why GCC can not find the header files in includes folder?

我正在嘗試使用#include <glad/glad.h>使用此 makefile 將glad.h 包含在我的main.cpp 中~

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

每個 header 文件都存在於包含文件夾中,但它仍然無法正常工作。 請幫助...如果make文件中有任何其他類型的錯誤,如何解決這個問題請指出...謝謝。

問題是make正在調用一個內置規則來將您的源文件編譯為 object 文件,但該規則對您的CINCLUDES或其他變量一無所知。 文檔...

編譯 C++ 程序

no 由 n.cc、n.cpp 或 n.C 自動生成,配方形式為“$(CXX) $(CPPFLAGS) $(CXXFLAGS) -c”。

最簡單的解決方案是將$(CINCLUDES)添加到$(CPPFLAGS)

CPPFLAGS += $(CINCLUDES)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM