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

Publicado por Mauricio Ferrari em 29/04/2022

[ Hits: 960 ]

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

Avidemux QT5 no Ubuntu 20.04

Google Earth Pro no Debian, Ubuntu, Linux Mint e derivados

Letras Bacanas no seu Shell Script sem Figlet

Usando "sscanf" para Dividir String com Delimitadores em C

Comando "sed" com parâmetro que aceita barra " / "

Leitura recomendada

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

Funções de manipulação de strings

Arduino IDE não reconhece portas USB no Ubuntu 22.04

DNS forwarding - um DNS universal

1024x768 no modo texto do seu laptop

  

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