openglc++;用g++;编译器,无法在Windows 10上找到GLFW(无Visual Studio) 我试图用C++和G+编译器从头开始设置OpenGL API。目前,我正在尝试使用GLFW获得一个简单的窗口系统,但是当我编译程序时,它似乎找不到GFLW目录

openglc++;用g++;编译器,无法在Windows 10上找到GLFW(无Visual Studio) 我试图用C++和G+编译器从头开始设置OpenGL API。目前,我正在尝试使用GLFW获得一个简单的窗口系统,但是当我编译程序时,它似乎找不到GFLW目录,c++,opengl,g++,glfw,C++,Opengl,G++,Glfw,我正试图从头开始做这件事,所以我不打算使用任何像VisualStudio这样的IDE,我所做的一切都是用记事本++和使用git bash的命令编写的。我想这样做,我知道这是很多额外的工作,但这是我想要实现的 我的项目文件夹如下所示: -TestProject -main.cpp -GFLW -gflw3.h 在main.cpp文件中,我复制粘贴了GFLW文档中的代码: #include <GLFW/glfw3.h> int main(void) {

我正试图从头开始做这件事,所以我不打算使用任何像VisualStudio这样的IDE,我所做的一切都是用记事本++和使用git bash的命令编写的。我想这样做,我知道这是很多额外的工作,但这是我想要实现的

我的项目文件夹如下所示:

-TestProject
    -main.cpp
    -GFLW
        -gflw3.h
在main.cpp文件中,我复制粘贴了GFLW文档中的代码:

#include <GLFW/glfw3.h>

int main(void)
{
    GLFWwindow* window;

    /* Initialize the library */
    if (!glfwInit())
        return -1;

    /* Create a windowed mode window and its OpenGL context */
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if (!window)
    {
        glfwTerminate();
        return -1;
    }

    /* Make the window's context current */
    glfwMakeContextCurrent(window);

    /* Loop until the user closes the window */
    while (!glfwWindowShouldClose(window))
    {
        /* Render here */
        glClear(GL_COLOR_BUFFER_BIT);

        /* Swap front and back buffers */
        glfwSwapBuffers(window);

        /* Poll for and process events */
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}
这现在应该创建一个exe,它允许我打开一个窗口,不多也不少。显然,我做错了什么,其中一个错误消息是,目录GFLW找不到。所以这是一个问题


基本上,我想在这里学习本教程,但不必使用VisualStudio或任何其他IDE。我知道他使用的文件与我不同,他做了一个叫做
链接
的事情,但我不明白这是如何适应我这里的极简设置的。

相对于编译器搜索路径(带尖括号),你包括
GLFW/glfw3.h
,但标题在你的项目目录树中。编译器不会在项目树中搜索系统头(包括尖括号),除非您通过传递
-Iinclude\u目录
参数明确告诉它这样做。因此,在您的情况下,您需要像这样包含标题:
#包含“GLFW/glfw3.h”
(推荐),或者添加
-I.
参数,告诉编译器在当前目录中搜索系统标题

还有关于链接-这将是解决标题问题后的下一个问题。您的compile命令如下所示:
g++main.cpp-o WindowApp.exe
,不包含任何要链接到的库。如果您使用的是MinGW,那么它必须包含以下参数,用于静态链接到OpenGL和GLFW3:
-lmingw32-lglfw3-lopengl32-lgdi32-luser32

例如,我对该项目的首选设置是:

-ProjectDirectory
    -bin
        -glfw3.dll (if you want to use dll)
    -include
        -GLFW
            -glfw3.h
            -glfw3native.h
    -lib
        -libglfw3.a
        -libglfw3dll.a (if you want to use dll)
    -src
        -main.cpp
    -build.bat
使用build.bat的以下内容(将
“到g++的实际路径”
更改为系统上到g++的路径,或者仅将其设置为
“g++”
(如果在path变量中):


非常感谢你。我会在有时间的时候尝试一下,然后你会得到我的复选标记!
-ProjectDirectory
    -bin
        -glfw3.dll (if you want to use dll)
    -include
        -GLFW
            -glfw3.h
            -glfw3native.h
    -lib
        -libglfw3.a
        -libglfw3dll.a (if you want to use dll)
    -src
        -main.cpp
    -build.bat
@ECHO OFF

REM Path to g++
SET G="Your actual path to g++"

SET OBJECTS=
REM Recursive every .cpp file in ./src
FOR /R "./src" %%a IN (*.cpp) DO (
    CALL SET OBJECTS=%%OBJECTS%% "%%a"
)

@ECHO ON

%G% %OBJECTS% -obin/a.exe -Iinclude -Llib -lmingw32 -lglfw3 -lopengl32 -lgdi32 -luser32