无法让 cmake 链接到 GLFW 库

Cannot get cmake to link to GLFW library

本文关键字:GLFW 链接 cmake      更新时间:2023-10-16

我正在尝试用GLFW编写一个OpenGL应用程序。文件结构如下

-USG
-build
-include
-glfw-3.3
-src
-CMakeLists.txt
-main.cpp
-CMakeLists.txt

USG文件中的 CMake 如下所示。

cmake_minimum_required(VERSION 3.0)
project(USG)
#--------------------------------------------------------------------
# Set GLFW variables
#--------------------------------------------------------------------
set(GLFW_BUILD_DOCS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_TESTS OFF CACHE BOOL "" FORCE)
set(GLFW_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
#--------------------------------------------------------------------
# Add subdirectories
#--------------------------------------------------------------------
add_subdirectory(include/glfw-3.3)
add_subdirectory(src)

src文件中的CMakeList如下

add_executable(usg main.cpp)
set(OpenGL_GL_PREFERENCE GLVND)
find_package(OpenGL REQUIRED)
if (OPENGL_FOUND)
target_include_directories(usg PUBLIC ${OPENGL_INCLUDE_DIR})
target_link_libraries(usg ${OPENGL_gl_LIBRARY})
endif()
target_link_libraries(usg glfw)

我在构建文件夹中运行cmake ../然后运行make。运行 cmake 按预期运行。运行使构建 glfw 很好,但是当它到达主.cpp它失败#include <GLFWglfw3.h>告诉我GLFWglfw3.h: No such file or directory。在我看来,cmake 没有将头文件正确链接到主文件.cpp但我对 cmake 的了解不足以让它工作。我尝试查看 glfw-3.3 示例文件夹中提供的示例,但我无法充分理解它来解决我的问题。我尝试从堆栈溢出的许多类似问题中汲取知识,但没有一个能提供帮助。

我在这里遵循本教程。我希望 OpenGL 应用程序相对可移植,这就是为什么我从源代码编译 glfw 而不是使用二进制文件。我正在Linux上构建,如果这很重要的话。

尝试#include <GLFW/glfw3.h>而不是#include <GLFWglfw3.h>

包含路径中的反斜杠是一种不好的 (Windows( 做法,不适用于 GCC。

https://gcc.gnu.org/onlinedocs/cpp/Include-Syntax.html