C++ 文件找不到包含的库的问题

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

我正在学习C++开发,我想要一个可用于创建窗口的文件。当我运行构建时,它完成时没有错误,并且 CLion 和 Copilot 都无法找到任何类型的错误。但是当我运行 main.cpp 文件时,它说我的 Window.cpp 无法找到 GLFW/glfw3.h 文件。

我的 CMakeLists.txt 文件如下所示:

    cmake_minimum_required(VERSION 3.27)
    project(Mako)

    add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/dependencies/glfw-3.4")
    include_directories("${CMAKE_CURRENT_SOURCE_DIR}/dependencies/glfw-3.4/include/GLFW")

    find_package(OpenGL REQUIRED)

    set(CMAKE_CXX_STANDARD 17)

    set(SOURCE_FILES main.cpp
        Window.cpp
        Window.h
    )

    add_library(Mako ${SOURCE_FILES})

    target_link_libraries(Mako glfw ${GLFW_LIBRARIES})

老实说,我的代码没什么了不起的,我有一个 Window.cpp 和 Window.h 文件以及一个我用来测试的 main.cpp。我很好奇是否需要在 Window.h 文件中包含 GLFW/glfw3.h 文件,但我不确定如何正确映射它,因为我刚刚开始学习 C++,这是完全合理的一个白痴,没有正确创建文件,也不需要 Window.h 文件,这只会导致 main.cpp 变得混乱。

窗口.cpp


    #include "Window.h"
    #include <GLFW/glfw3.h>
    #include <cstdio>

    namespace graphics
    {
        Window *Window::getInstance() { ... }
        void Window::init_window() { ... }
    }

窗口.h

    
    #ifndef MAKO_WINDOW_H
    #define MAKO_WINDOW_H

    namespace graphics
    {
    class Window
    {
        Window* window;
        public:
            static Window* getInstance();
            static void init_window();
            void error_callback(int error, const char* description);
    };
    }
    
#endif //MAKO_WINDOW_H

主.cpp


    #include "Window.cpp"

    using namespace graphics;

    int main() {
        graphics::Window::init_window();
        return 0;
    }

我尝试将 GLFW/glfw3.h 文件包含在我的 Window.h 文件中,但遇到了一个问题,无法找到该库,但 Window.cpp 文件却找到了。我希望能够在 main.cpp 中创建 Window 类的实例。

c++ glfw
1个回答
0
投票

按照 Botje 的评论,我修复了 add_subdirectory() 和 include_directories() 声明,并更改为 add_excutable() 而不是 add_library(),这似乎解决了我的问题。

我确实希望它最终可以作为一个库使用,但在我弄清楚渲染、输入和其他事情之后,这还很遥远。谢谢大家!

© www.soinside.com 2019 - 2024. All rights reserved.