2013-10-20 41 views
16

Xin chào Tôi có vấn đề với linkg Glfw và các thư viện khác sử dụng cmake. Từ dòng lệnh tôi biên dịch như thế nàyLỗi liên kết mục tiêu thư viện liên kết Cmake

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

Nhưng tôi muốn sử dụng cmake để biên dịch. Tôi cố gắng để sử dụng target_linkg_libraries nhưng điều này lỗi sản

CMake Lỗi tại CMakeLists.txt: 18 (target_link_libraries): không có thể chỉ định các thư viện liên kết cho mục tiêu "GL" mà không được xây dựng bởi dự án
này.

Tôi đã thử thực hiện việc này bằng cách thêm định nghĩa. Tôi không thấy lỗi nhưng điều này không liên kết thư viện.

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' là cho thêm xác định không cho các thư viện, hãy thử' add_libraries() 'sau đó. –

+0

add_libraries lệnh không rõ – Luffy

+0

Xin lỗi đã không có nó ra khỏi hộp. Nó khá đơn giản [google search] (http://bit.ly/1a3XwG7). –

Trả lời

33

Cú pháp cho target_link_libraries là:

target_link_libraries(your_executable_name libraries_list) 

Và bạn không cần phải thêm add_definition báo cáo (target_link_libraries thêm tùy chọn này)

Ngoài ra còn có một số biến hữu ích được cung cấp bởi OpenGL và Gói GLEW.

CMakeLists.txt của bạn nên được như:

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 nó sẽ đưa tôi lứa tuổi để giải quyết điều này. – Luffy

+10

Một chi tiết quan trọng là đặt 'target_link_libraries' ** sau ** dòng' add_executable' ** và ** 'find_package', vì vậy tất cả các thành phần liên kết đều được biết. – Murphy

Các vấn đề liên quan