2016-02-13 1 views
1

Предположим, что у меня есть библиотека, загруженная в виде пакета в conan, которая использует OpenGL, и в качестве таких ссылок с GL в CMakeLists.txt. Нужно ли пользователям библиотеки явно ссылаться на GL снова? Предоставляет ли конан метод отслеживания и включает его в ${CONAN_LIBS}?Могу ли я скрыть свои флаги ссылок от пользователей моего пакета conan?

Ближайшее, что я нашел в docs метод package_info, где кажется, что вы можете указать компоновщика дополнительные опции, но, кажется, я не использовать его должным образом в conanfile.py моей библиотеки. Я попробовал все:

self.cpp_info.sharedlinkflags = ["-lGL", "GL", "libGL", "libGL.so", "-llibGL.so"] 

Но если в пользовательском коде я не ставлю флаг ссылки, он поднимает «неопределенную ссылку» к методам GL в.

EDIT: Я работаю в Linux Mint 17.

+0

Возможно, было бы полезно указать, в какой операционной системе вы находитесь. – BitTickler

ответ

3

Да, вы должны объявить его в методе conanfile.pypackage_info() как конан разъединяет сборки (как определено в ваших Cmake файлов) из управления пакетами. Существует определенный атрибут для библиотек в атрибуте cpp_info, который вы могли бы использовать:

def package_info(self): 
    self.cpp_info.libs = ["GL"] 

Это libs поля является переходным между зависимостями и Lib GL будет содержаться в ${CONAN_LIBS} переменной

sharedlinkflags является транзитивный тоже, и заканчивается его значениями, накопленными в переменной cmake ${CMAKE_SHARED_LINKER_FLAGS}. Но, как говорится в его имени, это только для общей привязки, поэтому вполне вероятно, что вы не создаете такую ​​общую библиотеку, поэтому ваши флаги lib как GL не применяются к вашей цели.

Смежные вопросы