2013-10-20 152 views
16

嗨我有問題鏈接Glfw和其他庫使用cmake。 從命令行編譯我這樣Cmake鏈接庫目標鏈接錯誤

g++ main.cpp -lGL -lGLU -lGLEW -lglfw 

但我想用cmake的編譯。我試圖用target_linkg_libraries但這農產品錯誤

在CMake的的CMakeLists.txt錯誤:18(target_link_libraries):無法 爲目標「GL」,這是不受此
項目建成指定鏈接庫。

我試着用add定義來做這個。我沒有看到錯誤,但是這不會鏈接庫。

cmake_minimum_required (VERSION 2.6) 
project (test) 

find_package(OpenGL REQUIRED) 
find_package(GLEW REQUIRED) 

ADD_DEFINITIONS(
    -lGL 
    -lGLU 
    -lGLEW 
    -lglfw 
) 

add_executable(test.out 
    main.cpp 
) 

target_link_libraries(GL GLU GLEW glfw) 
+0

'ADD_DEFINITIONS'是額外的定義不是庫,嘗試'add_libraries()'然後。 –

+0

未知的命令add_libraries – Luffy

+0

對不起,沒有開箱。這是一個非常簡單的[谷歌搜索](http://bit.ly/1a3XwG7)。 –

回答

33

target_link_libraries的語法是:

target_link_libraries(your_executable_name libraries_list) 

而且你不必添加add_definition報表(target_link_libraries會將此選項)

也有通過OpenGL和提供了一些有用的變量GLEW軟件包。

你的CMakeLists.txt應該是這樣的:

cmake_minimum_required (VERSION 2.6) 
project (test) 

find_package(OpenGL REQUIRED) 
find_package(GLEW REQUIRED) 

include_directories(${OPENGL_INCLUDE_DIR} ${GLEW_INCLUDE_DIRS}) 

add_executable(test 
    main.cpp 
) 

target_link_libraries(test ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES}) 
+0

thx這將花費我很多時間來解決這個問題。 – Luffy

+10

一個重要的細節是在'add_executable' **和**'find_package'行之後放置'target_link_libraries' **,所以所有鏈接的組件都是已知的。 – Murphy