2013-02-07 3 views
0
fonction

Je veux avoir une option de configuration appelée « stdout » dans mon configure.ac qui aboutit à la définition d'une variable à « 1 » ou « 0 ». Voici ce que je mets dans le configure.ac:autoconf ne permet pas ...

AC_ARG_ENABLE([stdout], 
    [AS_HELP_STRING([--enable-stdout[=yes/no], --disable-stdout], 
    [Enable or disable output to stdout. Default is disabled.])], 
    [ if test "x$enableval" = "yes" ; then 
     AC_DEFINE([WRITETOSTDOUT],[1],[Enable output to stdout]) 
    else 
     AC_DEFINE([WRITETOSTDOUT],[0],[Disable output to stdout]) 
    fi ], 
    [AC_DEFINE([WRITETOSTDOUT],[0],[Enable output to stdout])]) 

Ce que je pense est que quand j'ajoute à configure l'option --enable-stdout ou --enable-stdout=yes, je reçois un #define WRITETOSTDOUT 1 et quand j'ajoute --disable-stdout ou --enable-stdout=no, je reçois un #define WRITETOSTDOUT 0

Il fonctionne comme prévu, sauf que --enable-stdout (sans paramètre) dans les résultats #define WRITETOSTDOUT 0

Une autre observatio n est-ce que lorsque je tape configure --enable-std et appuyez sur il concurrence à ./configure --enable-stdout=

Comment puis-je obtenir la simple option de validation pour fonctionner?

Répondre

1

Le secret est que vous devez appeler votre variable shell enable_foo pour --enable-foo ou --disable-foo. Alors:

AC_ARG_ENABLE([stdout], 
[AS_HELP_STRING([--enable-stdout=yes|no], 
       [Enable or disable output to stdout. Default is disabled.])], 
[enable_stdout="$enableval"], 
[enable_stdout="no"]) 

... 
stdout_val=0 
if test "x$enable_stdout" = "xyes" ; then 
    stdout_val=1 
fi 
AC_DEFINE_UNQUOTED([WRITETOSTDOUT],[$stdout_val],[Enable output to stdout]) 

Les Autotools Mythbuster pages ont quelques exemples.

+0

qui ressemble beaucoup plus propre, et la plupart des œuvres ... sauf pour deux petits défauts: le commentaire dans config.h est toujours « Désactiver ... » et l'onglet d'achèvement donne encore « = ». Le premier est celui qui me dérange le plus ... – steffen

+0

Le premier est facilement réparable. Je n'ai jamais essayé d'achever les arguments pour configurer. Mon environnement ne semble pas le faire. – ldav1s