Почему G cc не может найти заголовочные файлы в папке «включает»? - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь включить glad.h в свой основной. cpp используя #include <glad/glad.h> используя этот make-файл ~

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, укажите это ... Спасибо.

1 Ответ

0 голосов
/ 21 апреля 2020

Проблема в том, что make вызывает встроенное правило для компиляции ваших исходных файлов в объектные файлы, но это правило ничего не знает о ваших CINCLUDES или других переменных. Из документации ...

Компиляция программ на C ++

no производится автоматически из n. cc, n. cpp или n. C с рецептом вида '$ (CXX) $ (CPPFLAGS) $ (CXXFLAGS) -c'.

Самое простое решение - добавить $(CINCLUDES) до $(CPPFLAGS)

CPPFLAGS += $(CINCLUDES)
...