【发布时间】:2020-08-14 14:43:19
【问题描述】:
在我参加的一门大学课程中,我们开始使用 OpenGL。教授让我们下载 GLAD 和 GLFW,但我们没有看到如何使用 makefile 包含和使一切在 VS Code 中运行(我们在 Windows 10 64 位上使用 makefile 和 mingw-w64 编译器)。 我正在按照 OpenGL 指南编写一个简单的代码:
#include "glad/glad.h"
#include "glfw3.h"
int main(int argc, char* argv[])
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
return 0;
}
GLAD头文件位于:
C:\libs\高兴\包括\高兴
GLFW 库位于:
C:\libs\GLFW\glfw-3.3.2.bin.WIN64\lib-mingw-w64
在这个目录下有3个文件:
glfw3.dll
libglfw3.a
libglfw3dll.a
在 GLFW 目录中还有一个“include”文件夹:
C:\libs\GLFW\glfw-3.3.2.bin.WIN64\include\GLFW
有两个头文件:
glfw3.h
glfw3native.h
我在 VS Code 中的 C++ 项目中做的第一件事是修改“c_cpp_properties.json”文件,包括我包含在 .cpp 中的文件的相对路径。我还包含了库的路径,虽然最后,在代码中,我只包含了头文件:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"C:/libs/Glad/include/**",
"C:/libs/GLFW/glfw-3.3.2.bin.WIN64/include/GLFW/",
"C:/libs/GLFW/glfw-3.3.2.bin.WIN64/lib-mingw-w64/"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "C:\\MinGW-64\\mingw64\\bin\\gcc.exe",
"cStandard": "c11",
"cppStandard": "c++20",
"intelliSenseMode": "clang-x64"
}
],
"version": 4
}
此时,对于makefile,我复制并粘贴了一个向我们展示教授的makefile,仅用于编译.cpp,链接.o和最终结果.exe。在这种情况下,我们从未见过在 makefile 中写什么(我很确定问题出在 makefile 中),此外,我们还没有足够长的时间研究 makefile,无法单独使用它。这是makefile:
CC = g++
DEBUG = -g -std=c++2a
CFLAGS = -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)
ODIR = obj
OBJS = $(ODIR)/First_Window.o
LINK_TARGET = First_Window.exe
all : $(LINK_TARGET)
echo All done
$(LINK_TARGET) : $(OBJS)
$(CC) $(LFLAGS) $^ -o $@
$(ODIR)/%.o : %.cpp
$(CC) $(CFLAGS) $< -o $@
从终端编译:
g++ -Wall -c -g -std=c++2a First_Window.cpp -o obj/First_Window.o
First_Window.cpp:1:10: fatal error: glad/glad.h: No such file or directory
#include "glad/glad.h"
^~~~~~~~~~~~~
compilation terminated.
mingw32-make: *** [makefile:17: obj/First_Window.o] Error 1
我找到的所有指南,甚至在我正在阅读的同一本书中,都参考了 VS 社区,但我们从课程开始就使用了 VS Code。我应该修改/添加什么来解决问题?
提前谢谢你
【问题讨论】:
-
glad/glad.h住在哪里?glad/文件夹是否与您的 First_Window.cpp 文件位于同一位置? - 如果不是,您需要在编译行中包含该路径,例如:-I<path_to_glad_folder> -
那么接下来你可能会遇到 lib 问题(链接到glad 库),但首先要克服第一个错误 :)
标签: c++ makefile include mingw-w64 include-path