Допустим, у меня есть библиотека, загруженная в виде пакета в конан, который использует OpenGL, и как таковые ссылки с GL
в CMakeLists.txt
, Нужно ли пользователям библиотеки снова явно ссылаться на GL? Предоставляет ли conan метод для его отслеживания и включения в ${CONAN_LIBS}
?
Ближайшая вещь, которую я нашел в документы это метод package_info
где кажется, что вы можете указать дополнительные параметры компоновщика, но я, кажется, не использую его должным образом в моей библиотеке conanfile.py
, Я перепробовал все:
self.cpp_info.sharedlinkflags = ["-lGL", "GL", "libGL", "libGL.so", "-llibGL.so"]
Но если в пользовательском коде я не ставлю флаг ссылки, он вызывает «неопределенную ссылку» на методы GL.
РЕДАКТИРОВАТЬ: я работаю в Linux Mint 17.
Да, вам нужно объявить это в conanfile.py
package_info()
метод, как conan отделяет сборку (как определено в ваших файлах cmake) от управления пакетами. Существует определенный атрибут для библиотек в cpp_info
атрибут, который вы можете использовать:
def package_info(self):
self.cpp_info.libs = ["GL"]
это libs
поле является транзитивным между зависимостями, а библиотека GL будет содержаться в ${CONAN_LIBS}
переменная
sharedlinkflags
тоже транзитивен и заканчивается значениями, накопленными в переменной cmake ${CMAKE_SHARED_LINKER_FLAGS}
, Но, как говорится в его названии, оно предназначено только для общих ссылок, поэтому вполне вероятно, что вы не создаете такую общую библиотеку, поэтому ваши флаги lib GL
не применяются к вашей цели.
Других решений пока нет …