2014-12-16 5 views
2

Я пытаюсь использовать glbinding в своем собственном проекте. Я использую cmake для создания всего. Проблема заключается в том, что компоновщик не может найти эту библиотеку. Вероятно, я не строю библиотеку, поэтому ее нельзя связать, но я не знаю, как ее достичь. Я написал код связи в соответствии с https://github.com/hpicgs/glbinding#linking-binaries.linking glbinding with cmake

Cmake:

set(SOURCE_FILES main.cpp) 

add_executable(AKOpenGLEngine ${SOURCE_FILES}) 

set(CMAKE_PREFIX_PATH ${CMAKE_MODULE_PATH} glbinding) 
find_package(glbinding REQUIRED) 
include_directories(${GLBINDING_INCLUDES}) 
target_link_libraries(AKOpenGLEngine glbinding ${GLBINDING_LIBRARIES}) 

Ошибка:

Linking CXX executable AKOpenGLEngine 
ld: library not found for -lglbinding 

main.cpp:

#include <glbinding/gl/gl.h> 

int main(void) { 
    glbinding::Binding::initialize(); 
    exit(EXIT_SUCCESS); 
} 

Моя текущая структура проекта:

project structure

+0

Итак, ваш вопрос в том, что еще раз? «Как мне построить libglbinding?». Я бы предположил, что просто делаю обычный cmake, а затем делаю. – PeterT

+0

Я добавил glbinding как подмодуль git. Я хочу построить свой проект с glbinding с помощью одного cmake, а не строить glbinding отдельно –

+0

, тогда вам может понадобиться добавить один cmakelists, который сначала выполняет 'add_subdirectory (glbinding)' (или то, что вы назвали в своей директории) – PeterT

ответ

1

Вы пытались удалить glbinding из target_link_libraries? ${GLBINDING_LIBRARIES} должно быть достаточным; он передает <your_specific_file_path_to_glbinding_library> компоновщику. С -lglbinding компоновщик ищет библиотеку в некоторых каталогах по умолчанию, ваш каталог glbinding или build не включен, тем самым бросая library not found. Чтобы проверить содержимое ${GLBINDING_LIBRARIES}, вы можете распечатать его до выхода cmake, например, через message(STATUS ${GLBINDING_LIBRARIES}). Тем не менее, я также предлагаю интегрировать glbinding в качестве внешнего проекта, как это предлагает @janisz.

РЕДАКТИРОВАТЬ: извините, не видел действительного, но рухнувшего ответа от @ jet47