CMake链接glfw3 lib错误

时间:2016-09-01 08:40:12

标签: linux c++11 linker cmake glfw

我正在与CLion合作,我正在使用glfw3 lib编写程序。(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)

任何帮助将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:2)

您不应该将绝对路径硬编码到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将根据当前使用的编译器自动找出正确的编译器标志。