Incluindo o libmediainfo corretamente em um arquivo CMakeFiles.txt para uso em seus projetos

Publicado por Mauricio Ferrari em 29/04/2022

[ Hits: 982 ]

Blog: https://www.youtube.com/@LinuxDicasPro

 


Incluindo o libmediainfo corretamente em um arquivo CMakeFiles.txt para uso em seus projetos



A biblioteca libmediainfo serve basicamente para extrair informações de arquivos multimídia. Se você está precisando extrair informações de arquivos multimídia e não precisa dos recursos do Qt5 por exemplo, você pode usar essa biblioteca. Não tem todo aquele desempenho, mas é uma opção que eu decidi testar no meu projeto.

Para incluir no CMakeFiles.txt, você vai precisar usar esses dois recursos que você provavelmente já usa:

include_directories()
target_link_libraries()

Não sei como ficaria usando find_package(), então fiz dessa forma bem direta:

include_directories(
    /usr/include/MediaInfo
    /usr/include/MediaInfoDLL
)

target_link_libraries(
    mediainfo
)

Já deveria estar pronto, só que sofri com erros como referências não definidas e um erro desse nível:
[ ... ] undefined reference to symbol 'dlclose@@GLIBC_2.2.5' /usr/bin/ld: note: 'dlclose@@GLIBC_2.2.5' is defined in DSO /lib/x86_64-linux-gnu/libdl.so.2 so try adding it to the linker command line /lib/x86_64-linux-gnu/libdl.so.2: could not read symbols: Invalid operation: [ ... ]
Então, olhando para dentro do pacote do libmediainfo, analisei o arquivo /usr/lib64/pkgconfig/libmediainfo.pc, e essa linha me interessou:

Libs: -L/usr/lib64 -lmediainfo -lz

Esse -lz é parte do libzen, dependência do libmediainfo e em relação a mensagem acima, nem coloquei ela completa porque ela mesma já diz o que está faltando.

Na linha de comando isso ficaria assim: -lmediainfo -lz -ldl

O -ldl se refere ao libdl do erro acima. Então, para inclusão completa da biblioteca no CMakeFiles.txt, eu fiz dessa forma:

include_directories(
    /usr/include/MediaInfo
    /usr/include/MediaInfoDLL
)

target_link_libraries(
    mediainfo
    dl
    z
)

E dessa forma funcionou. A versão que eu usei foi a versão 22.03, mas deve funcionar em outras versões.

Uma dica básica sobre seu uso, pode ser encontrado aqui: Use MediaInfo library to get video information in C++ - Katastros

Exemplos de uso, podem ser encontrados aqui:
O site oficial para mais informações:
Outras dicas deste autor

Flareget no Debian, Ubuntu, Linux Mint e derivados

deb2appimage - Crie AppImage facilmente

Resolvendo problemas de instabilidade no WIFI no Ubuntu e Linux Mint

Compilando o Vim 8.2 com suporte a clipboard

Instalando o EasyMp3Gain no Deepin 20

Leitura recomendada

Marcações de erro durante escrita do código no VSCODE módulo de C (Intellisense) - ErrorSquiggles

Instalando e usando o Dconf Editor, o "regedit" para Linux

Como ouvir rádios online via terminal

Área de Troca (swap)

Limitando taxa de transferência do Pacman

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts