2013-10-20 22 views
16

Witam Mam problem z łączem Glfw i innymi bibliotekami przy użyciu cmake. z linii poleceń i kompilować jak tenBłąd linku docelowego biblioteki łącza linku

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

Ale chciałem użyć cmake do kompilacji. Próbowałem użyć target_linkg_libraries ale ten błąd produce

CUpewnij Błąd w CMakeLists.txt: 18 (target_link_libraries): Nie można określić bibliotek linku do docelowego „GL”, który nie jest zbudowany przez tego
projektu.

Próbowałem zrobić to za pomocą definicji add. Nie widzę błędu, ale to nie łączy bibliotek.

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' jest dodatkowo definiuje nie dla bibliotek, spróbuj' add_libraries() 'wtedy. –

+0

nieznane polecenie add_libraries – Luffy

+0

Niestety nie było tego po wyjęciu z pudełka. To całkiem proste [wyszukiwanie google] (http://bit.ly/1a3XwG7). –

Odpowiedz

33

Składnia target_link_libraries jest:

target_link_libraries(your_executable_name libraries_list) 

I nie trzeba dodawać add_definition oświadczenia (target_link_libraries dodaje tej opcji)

Istnieje również kilka przydatnych zmienne dostarczone przez OpenGL i Pakiety GLEW.

Twój CMakeLists.txt powinno być tak:

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 to zajmie mi wieku, aby rozwiązać ten problem. – Luffy

+10

Ważnym szczegółem jest umieszczenie 'target_link_libraries' ** po ** liniach' add_executable' ** i ** 'find_package', więc wszystkie powiązane komponenty są znane. – Murphy

Powiązane problemy