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的新手,所以我真的不知道有什么问题