【问题标题】:Cannot get cmake to link to GLFW library无法让 cmake 链接到 GLFW 库
【发布时间】:2020-01-01 09:30:32
【问题描述】:

我正在尝试使用 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文件中的CMakeLists如下

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 按预期运行。运行 make 可以很好地构建 glfw,但是当它到达 main.cpp 时,它会在 #include <GLFW\glfw3.h> 处失败,告诉我 GLFW\glfw3.h: No such file or directory。在我看来,cmake 没有正确地将头文件链接到 main.cpp 文件,但我对 cmake 的了解还不够,无法使其正常工作。我已经尝试查看 glfw-3.3 示例文件夹中提供的示例,但我无法充分理解它来解决我的问题。我已经尝试从堆栈溢出的许多类似问题中汲取知识,但没有一个可以提供帮助。

我正在关注this tutorial here。我希望 OpenGL 应用程序相对可移植,这就是我从源代码编译 glfw 而不是使用二进制文件的原因。如果这很重要,我正在 Linux 上构建。

【问题讨论】:

    标签: c++ opengl cmake glfw


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 2021-05-26
      • 1970-01-01
      相关资源
      最近更新 更多