Desenvolvendo um plugin de visualização para o XMMS (Parte 1)

Aprenda a como desenvolver um plugin de visualização para o XMMS utilizando OpenGL. Este artigo nos apresenta um belo exemplo prático de como fazer.

[ Hits: 20.754 ]

Por: Denis Zanin em 23/07/2003


Criando os arquivos para a instalação do plugin



Antes de começarmos totalmente a programar o plugin, precisamos montar os arquivos para a instalação do plugin. Para a instalação nós montaremos 2 arquivos essenciais: Makefile.am e configure.in.

Esquema dos arquivos de instalação:

No arquivo Makefile.am, nós escreveremos:
  • o nome da biblioteca do plugin que será criada
  • o diretório da biblioteca usada no plugin
  • os arquivos com o código fonte
Exemplo de um Makefile.am:

lib_LTLIBRARIES = libvol.la

libdir = @XMMS_VISUALIZATION_PLUGIN_DIR@

AM_CFLAGS = -Wall @XMMS_CFLAGS@ @CFLAGS@ -I$(top_builddir) -I$(top_srcdir) \
@GTK_CFLAGS@ @SDL_CFLAGS@

LIBS = @XMMS_LIBS@ @SDL_LIBS@ @GL_LIBS@
libnobugs_la_LDFLAGS = -module -avoid-version
libnobugs_la_SOURCES = main.c

Na primeira linha do arquivo nós escrevemos o nome da biblioteca que será criada:

lib_LTLIBRARIES = nomedabiblioteca

Na terceira linha, está o diretório onde a biblioteca a ser criada será instalada:

libdir = onde_a_biblioteca_será_instalada

Na quinta linha é passada uma linha de comando para o compilador.

Na sétima linha está as bibliotecas que serão usadas para compilar o programa:

LIBS = bibliotecas_que_serão_usadas

Na nona linha passamos ao compilador os arquivos que possuem todo o código-fonte:

libnobugs_la_SOURCES = arquivo1.c arquivo2.c arquivo3.c

Próximo arquivo de instalação: configure.in

O arquivo configure.in conterá toda a informação que será passada quando executarmos o comando "./configure". Exemplo de um arquivo configure.in:

dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.53)
AC_INIT(main.c)
AC_CANONICAL_TARGET([])
AM_INIT_AUTOMAKE(xmms-vivaolinux-teste-plugin, 0.1.0)
AM_CONFIG_HEADER(config.h)
AM_DISABLE_STATIC

AC_PROG_CC
AC_PROG_CPP
AM_PROG_CC_STDC
AC_HEADER_STDC
AC_PROG_INSTALL
AM_PROG_LIBTOOL
AC_PATH_X

AM_PATH_GLIB(1.2.2,,AC_MSG_ERROR([*** GLIB >= 1.2.2 nao esta instalada - por favor instale uma versao recente ***]))
AM_PATH_XMMS(1.2.4,,AC_MSG_ERROR([*** XMMS >= 1.2.4 nao esta instalada - por favor instale uma versao recente***]))
AM_PATH_GTK(1.2.2,,AC_MSG_ERROR([*** GTK+ >= 1.2.2 nao esta instalada - por favor instale uma versao recente***]),gthread)
AM_PATH_SDL(1.2.0,,AC_MSG_ERROR([*** SDL >= 1.2.0 nao esta instalada - por favor instale uma versao recente***]))

LIBS_save=$LIBS
LIBS="$LIBS $GTK_LIBS"

MATHLIB="-lm"
AC_PATH_X
AC_PATH_XTRA
if test x$have_x = xyes; then
CFLAGS="$CFLAGS $X_CFLAGS"
SYS_GL_LIBS="$X_LIBS -lGL -lGLU"
else
SYS_GL_LIBS="-lGL -lGLU"
fi

dnl Check for OpenGL
AC_MSG_CHECKING(for OpenGL support)
have_opengl=no
AC_TRY_COMPILE([
#include <GL/gl.h>
#include <GL/glu.h>
],[
],[
have_opengl=yes
])
AC_MSG_RESULT($have_opengl)
if test x$have_opengl = xyes; then
CFLAGS="$CFLAGS -DHAVE_OPENGL"
GL_LIBS="$SYS_GL_LIBS"
else
AC_MSG_ERROR(Nao foi possivel encontrar OpenGL instalada em sua máquina)
fi
AC_SUBST(GL_LIBS)
CPPFLAGS=$CPPFLAGS_save
LIBS=$LIBS_save

AC_OUTPUT(Makefile)

Na terceira linha indicamos os arquivos que serão compilados:

AC_INIT(arquivos_a_serem_compilados)

Na quinta linha damos um nome para o plugin e a sua versão:

AM_INIT_AUTOMAKE(nome_do_programa , versão_do_programa)

Da décima sétima à vigésima linha está uma checagem das bibliotecas necessárias para compilar o programa, caso nao a encontre imprime um erro:

AM_PATH_GLIB(1.2.2,,AC_MSG_ERROR([*** GLIB >= 1.2.2 nao esta instalada - por favor instale uma versao recente ***]))
AM_PATH_XMMS(1.2.4,,AC_MSG_ERROR([*** XMMS >= 1.2.4 nao esta instalada - por favor instale uma versao recente***]))
AM_PATH_GTK(1.2.2,,AC_MSG_ERROR([*** GTK+ >= 1.2.2 nao esta instalada - por favor instale uma versao recente***]),gthread)
AM_PATH_SDL(1.2.0,,AC_MSG_ERROR([*** SDL >= 1.2.0 nao esta instalada - por favor instale uma versao recente***]))


Da trigésima quinta à quinquagésima primeira linha, começa uma procura pelas bibliotecas do OpenGL, caso nao a encontre ele encerra o programa e imprime um erro:

dnl Check for OpenGL
AC_MSG_CHECKING(for OpenGL support)
have_opengl=no
AC_TRY_COMPILE([
#include <GL/gl.h>
#include <GL/glu.h>
],[
],[
have_opengl=yes
])
AC_MSG_RESULT($have_opengl)
if test x$have_opengl = xyes; then
CFLAGS="$CFLAGS -DHAVE_OPENGL"
GL_LIBS="$SYS_GL_LIBS"
else
AC_MSG_ERROR(Nao foi possivel encontrar OpenGL instalada em sua máquina)
fi


Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Criando os arquivos para a instalação do plugin
   3. Começando a programar o plugin de visualização
   4. Compilando e instalando o plugin de visualização
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Estudando recursividade direta e indireta

Compilando o Mono 2.2 no Ubuntu 8.10

Dynamic libraries com libtool

Utilizando técnicas recursivas em C e C++

Algum humor e C++ Design Patterns (parte 2)

  
Comentários
[1] Comentário enviado por cesarcardoso em 23/07/2003 - 12:25h

O artigo é fantástico e espero que continue assim!

Aliás, merecia um artigo só pra essa arte de criar Makefile.am e configure.in...

[2] Comentário enviado por fabio em 23/07/2003 - 23:27h

Mereceu até um screenshot com o plugin rodando :)
http://www.vivaolinux.com.br/screenshots/verScreenshot.php?codigo=169

[3] Comentário enviado por removido em 14/11/2006 - 17:34h

Muito bom o artigo, parabéns!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts