2016-09-01 75 views
1

我與克利翁的工作,我正在寫使用glfw3 LIB的程序。(http://www.glfw.org/docs/latest/CMake的鏈接glfw3 LIB錯誤

我安裝和的lib我有u和正確所做的一切。在.h文件:

/usr/local/lib/libglfw3.a 

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

我想現在使用的庫,但我得到的鏈接錯誤:

undefined reference to 'glViewport'等等,等等所有功能,我使用

我添加的lib路徑make文件,我不明白我在做什麼錯了,我的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) 

任何幫助將不勝感激。

謝謝!

回答

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_STANDARD 11) 
set(CMAKE_CXX_STANDARD_REQUIRED ON) 

更換

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

和CMake的會找出正確的公司mpiler標誌自動取決於當前正在使用的編譯器。

+1

您可能想要添加一行來告訴OP *爲什麼* OP獲取鏈接器錯誤,而不僅僅是顯示如何解決它。 –

+0

@JoachimPileborg你說得對。 – Mumfordwiz

+0

@Torbjörn硬編碼的字符串不會改變任何內容。這可能是openGL需要不同的模塊。但從文檔依賴,我添加了我需要的一切 – Mumfordwiz