2016-10-27 1 views
0

Je souhaite créer une version qui entraînera la construction d'une version spécifique d'un projet par configure.Comment activer une version optionnelle de configure avec autotools?

Fondamentalement, je veux créer une configuration qui prend une option de ligne de commande ./configure --enable-FOO qui construit avec le drapeau du compilateur -DFOO et quelques options différentes du compilateur.

Comment est-ce que je peux faire ceci?

+1

Voici un très bon aperçu de la façon de procéder: https://autotools.io/autoconf/arguments.html – ptomato

Répondre

1

Vous posez deux questions différentes ici: d'abord, comment ajouter un argument --enable à configure; et deuxièmement, comment avoir cet argument affecte la construction d'une manière spécifique.

L'ajout d'un argument est effectué en utilisant AC_ARG_ENABLE. Il prend le nom de la fonctionnalité, une chaîne d'aide et quelques actions facultatives. Ainsi, par exemple:

AC_ARG_ENABLE(something, [enable the something feature]) 

(Dans la vraie vie, vous devriez utiliser AS_HELP_STRING pour construire la chaîne d'aide ici.)

Cela ajoute --enable-something et --disable-something à configure; et, important, ajoute une nouvelle variable qui peut être utilisée pour vérifier ce que l'utilisateur a fait.

La définition d'une macro transmise au compilateur C se fait avec AC_DEFINE. Ainsi, vous pouvez accomplir ce que vous voulez en cochant la nouvelle variable:

if test "$enable_something" = yes; then 
    AC_DEFINE([SOMETHING], [1], [define to enable the something feature]) 
fi 

Cela entraînera -DSOMETHING=1 à passer à la compilation; ou bien émettra #define SOMETHING 1 dans votre config.h.