2013-10-20 14 views
16

हाय मुझे लिंकक ग्लफू और सेमेक का उपयोग करके अन्य पुस्तकालयों में समस्या है। कमांड लाइन से मैं इससीमेक लिंक लाइब्रेरी लक्ष्य लिंक त्रुटि

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

तरह संकलन लेकिन मैं संकलन के लिए cmake उपयोग करना चाहता था। 18 (target_link_libraries): लक्ष्य "जीएल" जो इस
परियोजना द्वारा निर्मित नहीं है के लिए लिंक पुस्तकालयों को निर्दिष्ट नहीं सकते हैं कि मैं target_linkg_libraries लेकिन इस उत्पादन त्रुटि

CMake CMakeLists.txt में त्रुटि का उपयोग करने की कोशिश की।

मैंने अतिरिक्त परिभाषाओं का उपयोग करके ऐसा करने की कोशिश की। मुझे त्रुटि दिखाई नहीं दे रही है लेकिन यह पुस्तकालयों को लिंक नहीं करती है।

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 इस विकल्प जोड़ता है)

भी ओपन और द्वारा प्रदान की कुछ उपयोगी चर रहे हैं 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

संबंधित मुद्दे