CMake 链接 glfw3 库错误

CMake linking glfw3 lib error

我正在使用 CLion,并且正在使用 glfw3 库编写程序。(http://www.glfw.org/docs/latest/)

我为 lib 安装并正确执行了所有操作 我有 .a 和 .h 文件:

/usr/local/lib/libglfw3.a

/usr/local/include/.h(all files)

我正在尝试使用该库,但出现链接器错误:

undefined reference to 'glViewport' 等等等等我正在使用的所有功能

我在 make 文件中添加了 lib 路径,我不明白我做错了什么,我的 CMakeLists.txt 看起来像这样:

cmake_minimum_required(VERSION 3.6)
project(testing)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(SOURCE_FILES main.cpp examples.h)

add_executable(testing ${SOURCE_FILES})
target_link_libraries(testing /usr/local/lib/libglfw3.a)
target_link_libraries(testing /usr/local/lib/libTest.a)

target_link_libraries(testing pthread)

任何帮助将不胜感激。

谢谢!

您不应将绝对路径硬编码到您的 CMake 文件中。这使 CMake 变得无用。

documentation of GLFW on how to link against it里面明确写着:

find_package(glfw3 3.2 REQUIRED)
find_package(OpenGL REQUIRED)

target_include_directories(myapp PUBLIC ${OPENGL_INCLUDE_DIR})
target_link_libraries(myapp
                      glfw
                      ${OPENGL_gl_LIBRARY})

此外,您可以替换

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

CMake 会根据当前使用的编译器自动找出正确的编译器标志。