我正在与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)
任何帮助将不胜感激。
谢谢!
答案 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将根据当前使用的编译器自动找出正确的编译器标志。