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

Publicado por Mauricio Ferrari em 29/04/2022

[ Hits: 292 ]

Blog: https://github.com/mxnt10

 


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 '[email protected]@GLIBC_2.2.5' /usr/bin/ld: note: '[email protected]@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

Comando CLS do Windows no Linux

Instale pacotes pelo apt através de uma lista

gcc: fatal error: cannot execute 'cc1plus': execvp: [...] - Como resolver no Linux Mint 20

Conky Manager no Linux Mint 20

UMPlayer reformulado para o Linux Mint 20

Leitura recomendada

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

Verificação de hardware com Hardinfo no Ubuntu 10.10

Wallpaper Slideshow no LXDE

Minecraft no Fedora 18

Ampliador de tela (lupa) do Compiz no Ubuntu 11.04

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário