Как добавить libFLAC с libogg в качестве зависимости в мой статически связанный проект CMake?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Как добавить libFLAC с libogg в качестве зависимости в мой статически связанный проект CMake?

Сообщение Anonymous »

У меня есть версия приложения C++ CMake: https://github.com/LTVA1/furnace
Эта программа способна создавать файлы WAV через libsndfile. Однако я хочу добавить возможность экспорта flac/ogg/mp3/etc. файлы для удобства пользователя.
Но есть проблема: я не могу правильно добавить libFLAC, libogg и libvorbis в свой проект. Ошибки libFLAC с ошибкой «не могу найти ogg include» при компиляции. Я использовал этот вариант libogg/libvorbis: https://github.com/Iunusov/OGG-Vorbis-CMAKE.
В CMakeLists основного проекта я попытался добавить следующие строки:
было

Код: Выделить всё

if (USE_SNDFILE)
стал

Код: Выделить всё

if (USE_SNDFILE)
set(OGG_LIBRARY ${CMAKE_SOURCE_DIR}/extern/ogg)
set(OGG_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/extern/ogg/include)
# set(FLAC_LIBRARY extern/flac)
# set(FLAC_INCLUDE_DIR extern/flac/include)
# set(VORBIS_LIBRARY extern/vorbis)
# set(VORBIS_INCLUDE_DIR extern/vorbis/include)

add_subdirectory(extern/ogg EXCLUDE_FROM_ALL)
list(APPEND DEPENDENCIES_INCLUDE_DIRS extern/ogg/include)
list(APPEND DEPENDENCIES_LIBRARIES Ogg)

add_subdirectory(extern/vorbis EXCLUDE_FROM_ALL)
list(APPEND DEPENDENCIES_INCLUDE_DIRS extern/vorbis/include)
list(APPEND DEPENDENCIES_LIBRARIES Vorbis)

add_subdirectory(extern/flac EXCLUDE_FROM_ALL)
list(APPEND DEPENDENCIES_INCLUDE_DIRS extern/flac/include)
list(APPEND DEPENDENCIES_LIBRARIES FLAC)
Проблема в том, что для libFLAC требуется libogg, для libvorbis требуется libogg, а для libsndfile требуются все три: flac/ogg/vorbis. Я думал, что CMake каким-то образом автоматически позволит #include работать внутри libFLAC/внутри моего основного приложения. Похоже, что библиотеки созданы в первую очередь для использования с каким-то менеджером пакетов, но я хочу просто статически связать эти поставочные библиотеки с моим приложением (пользователь клонирует git-репо без установки каких-либо необходимых пакетов и просто создает одно двоичное приложение). который не имеет никаких внешних зависимостей). Я считаю, что именно это довольно строгое требование усложняет включение всех этих библиотек.
Я не хочу использовать какой-либо менеджер пакетов. Я не хочу полагаться на то, что эти библиотеки уже установлены на стороне пользователя (как это происходит с библиотеками, которые в настоящее время используются в приложении). Я хочу, чтобы они были статически связаны и включены в основной двоичный файл приложения.
P.S. Практически нет опыта работы с CMake.
Я пытался добавить библиотеки в свой проект и ожидал, что они сработают. Но они не отображаются должным образом в проекте, включая ошибку

Подробнее здесь: https://stackoverflow.com/questions/785 ... nked-cmake
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»