2011-09-20 24 views
11

Estoy creando un proyecto y utilizando las herramientas GNU Autoconf para realizar la configuración y la creación. Configuré todas las comprobaciones de mi biblioteca y mi archivo de encabezado, pero parece que no puedo averiguar cómo verificar si existe un archivo ejecutable en el sistema y si no existe, falla.Comprobación automática del programa y error si no se encuentra

He intentado:

AC_CHECK_PROG(TEST,testprogram,testprogram,AC_MSG_ERROR(Cannot find testprogram.)) 

Cuando se ejecuta configure y salidas:

Checking for testprogram... find: `testprogram. 15426 5 ': No such file or directory 

pero no falla.

Respuesta

9

Prueba esto que es lo que sólo se levantan de un proyecto mío, busca algo que se llama quantlib-config en la ruta:

# borrowed from a check for gnome in GNU gretl: def. a check for quantlib-config 
AC_DEFUN(AC_PROG_QUANTLIB, [AC_CHECK_PROG(QUANTLIB,quantlib-config,yes)]) 
AC_PROG_QUANTLIB 
if test x"${QUANTLIB}" == x"yes" ; then 
    # use quantlib-config for QL settings 
    [.... more stuff omitted here ...] 
else 
    AC_MSG_ERROR([Please install QuantLib before trying to build RQuantLib.]) 
fi 
+0

Gracias por ayuda, lo usé para crear una versión más corta que se adapte a mis necesidades. –

+0

Sí, seguro que se ve bien si solo necesitas rescatar si no se encuentra el binario. –

20

me pareció que este es el enfoque más corta.

AC_CHECK_PROG(FFMPEG_CHECK,ffmpeg,yes) 
if test x"$FFMPEG_CHECK" != x"yes" ; then 
    AC_MSG_ERROR([Please install ffmpeg before installing.]) 
fi 
3

similar a la anterior, pero tiene la ventaja de ser también capaz de interact with automake mediante la exportación de la variable de estado

AC_CHECK_PROG([ffmpeg],[ffmpeg],[yes],[no]) 
AM_CONDITIONAL([FOUND_FFMPEG], [test "x$ffmpeg" = xyes]) 
AM_COND_IF([FOUND_FFMPEG],,[AC_MSG_ERROR([required program 'ffmpeg' not found.])]) 
0

Tropezamos aquí en la búsqueda de este tema, debo señalar que si quieres haga que su programa sólo se veía en pathm una prueba de tiempo de ejecución es suficiente:

if ! which programname >/dev/null ; then 
    AC_MSG_ERROR([Missing programname] 
fi 
1

al utilizar AC_CHECK_PROG, esta es la versión más concisa que me he encontrado a través es:

AC_CHECK_PROG(BOGUS,[bogus],[bogus],[no]) 
test "$BOGUS" == "no" && AC_MSG_ERROR([Required program 'bogus' not found.]) 

Cuando el programa no está presente, se generará esta salida:

./configure 
...cut... 
checking for bogus... no 
configure: error: Required program 'bogus' not found. 

O cuando se combina con la incorporada en el programa comprueba autoconf, utilizar esto en su lugar:

AC_PROG_YACC 
AC_PROG_LEX 

test "$YACC" == ":" && AC_MSG_ERROR([Required program 'bison' not found.]) 
test "$LEX" == ":" && AC_MSG_ERROR([Required program 'flex' not found.]) 
Cuestiones relacionadas