无法让 cmake 到 link 到 GLFW 库
Cannot get cmake to link to GLFW library
我正在尝试使用 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)
I 运行 cmake ../
后跟 make
在构建文件夹中。 运行 cmake 运行s 符合预期。 运行 make 构建 glfw 很好,但是当它到达 main.cpp 时它在 #include <GLFW\glfw3.h>
失败告诉我 GLFW\glfw3.h: No such file or directory
。在我看来,cmake 没有正确地将头文件链接到 main.cpp 文件,但我对 cmake 的了解还不够多,无法使其正常工作。我已经尝试查看 glfw-3.3 示例文件夹中提供的示例,但我无法充分理解它来解决我的问题。我尝试从有关堆栈溢出的许多类似问题中汲取知识,但其中 none 可能有所帮助。
我正在关注 this tutorial here。我希望 OpenGL 应用程序相对可移植,这就是我从源代码而不是使用二进制文件编译 glfw 的原因。如果重要的话,我正在 Linux 上构建。
尝试 #include <GLFW/glfw3.h>
而不是 #include <GLFW\glfw3.h>
包含路径中的反斜杠是不好的 (Windows) 做法,不适用于 GCC。
我正在尝试使用 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)
I 运行 cmake ../
后跟 make
在构建文件夹中。 运行 cmake 运行s 符合预期。 运行 make 构建 glfw 很好,但是当它到达 main.cpp 时它在 #include <GLFW\glfw3.h>
失败告诉我 GLFW\glfw3.h: No such file or directory
。在我看来,cmake 没有正确地将头文件链接到 main.cpp 文件,但我对 cmake 的了解还不够多,无法使其正常工作。我已经尝试查看 glfw-3.3 示例文件夹中提供的示例,但我无法充分理解它来解决我的问题。我尝试从有关堆栈溢出的许多类似问题中汲取知识,但其中 none 可能有所帮助。
我正在关注 this tutorial here。我希望 OpenGL 应用程序相对可移植,这就是我从源代码而不是使用二进制文件编译 glfw 的原因。如果重要的话,我正在 Linux 上构建。
尝试 #include <GLFW/glfw3.h>
而不是 #include <GLFW\glfw3.h>
包含路径中的反斜杠是不好的 (Windows) 做法,不适用于 GCC。