[使用makefile和VS Code包含第三方标头和库

问题描述 投票:0回答:1

我正在参加的大学课程中,我们开始使用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 \ Glad \ include \ glad

GLFW库位于:

C:\ libs \ GLFW \ glfw-3.3.2.bin.WIN64 \ lib-mingw-w64

并且在此目录中,有3个文件:

glfw3.dll

libglfw3.a

libglfw3dll.a

在GLFW目录中,还有一个“包含”文件夹:

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文件,该文件向我们显示了教授,仅用于编译.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。我应该修改/添加什么来解决该问题?

提前谢谢您

c++ makefile include mingw-w64 include-path
1个回答
0
投票

哦,我刚刚看到了高兴的文件夹在哪里,所以请尝试克服第一个错误:

CC = g++
DEBUG = -g -std=c++2a
CFLAGS = -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)
ODIR = obj
OBJS = $(ODIR)/First_Window.o
INCLUDE = -IC:\libs\Glad\include\glad

LINK_TARGET = First_Window.exe

all : $(LINK_TARGET)
    echo All done

$(LINK_TARGET) : $(OBJS)
    $(CC) $(LFLAGS) $^ -o $@

$(ODIR)/%.o : %.cpp
    $(CC) $(INCLUDE) $(CFLAGS) $< -o $@

我在其中添加了glad文件夹的包含路径。您还可以添加任何其他标题路径:

INCLUDE = -IC:\libs\Glad\include\glad -IC:\libs\GLFW\glfw-3.3.2.bin.WIN64\include\GLFW
© www.soinside.com 2019 - 2024. All rights reserved.