默认情况下,GCC不会找到其包含标头,即使它们存在并且VSCode intellisense也可以找到它们

时间:2019-07-19 08:23:28

标签: gcc makefile visual-studio-code include-path msys2

GCC在msys2 gcc中找到了include头文件,但是用裸mingw64找到了它们。 VSCode Intellisense可以找到它们,而我之前已经使用相同的Makefile编译了相同的代码。

我已经包含了绝对路径,现在它可以找到它们,但是它可以找到include路径中的标头

#include <iostream> //always compiles
#include <C:/msys64/mingw64/include/SDL2/SDL.h>//works
#include <SDL2/SDL.h> //doesn't compile

int main() {
    std::cout << "Hello World!" << std::endl;
}

我的MakeFile

CXX       := g++
CXX_FLAGS := -Wall -Wextra -std=c++17 -ggdb

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

LIBRARIES   := -lSDL2
EXECUTABLE  := main


all: $(BIN)/$(EXECUTABLE)

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

$(BIN)/$(EXECUTABLE): $(SRC)/*.cpp
    $(CXX) $(CXX_FLAGS) -I$(INCLUDE) -L$(LIB) $^ -o $@ $(LIBRARIES)
    cp $(LIB)/*/*.dll $(BIN)/
clean:
    -rm $(BIN)/*

include文件夹为空,因为我只有SDL依赖项,它已安装在/ mingw64 / include /文件夹中。

#include <SDL2/SDL.h>

错误
g++ -Wall -Wextra -std=c++17 -ggdb -Iinclude -Llib src/main.cpp -o bin/main -lSDL2
src/main.cpp:3:10: fatal error: SDL2/SDL.h: No such file or directory
    3 | #include <SDL2/SDL.h>
      |          ^~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:20: bin/main] Error 1
The terminal process terminated with exit code: 2

我知道我可以将绝对包含路径硬编码到Makefile中,但是我不希望那样,我希望它在<iostream>工作时起作用。这以前对我有用,但是我已经从使用Cygwin到MinGW64到MSYS2和mingw64并使用pacman安装了gcc,并且与前两个都很好用。我是gcc和mingw的新手,所以我真的不知道有什么问题

0 个答案:

没有答案