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

Publicado por Mauricio Ferrari em 29/04/2022

[ Hits: 1.164 ]

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

Inserindo Scripts Durante a Inicialização e o Desligamento do Sistema no KDE

Transmageddon 1.5 no Slackware Current e no Python 3.9 - É sério!

Spotify Atualizado no Ubuntu e Linux Mint

Mudando o Destino para Geração de Pacotes dos SlackBuild

Correção do warning: setlocale: LC_ALL: cannot change locale (pt_BR.UTF-8) no ArchLinux, Manjaro, BigLinux, Junest (mini Arch Linux)

Leitura recomendada

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

Servidor NFS no OpenBSD

A criação do mundo segundo o root!

Sockets em shell script

Gerencie a bateria do seu notebook usando o powertop

  

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