Lors de la définition conditionnelle du package/lib _SOURCES ou des indicateurs per-package/lib (CFLAGS, LDFLAGS, LDADD, etc.), est-il préférable de l'ajouter conditionnellement aux indicateurs du package , par exemple:Ajout ou assignation conditionnelle Automake pour les sources/flags/libs
bin_PPROGRAMS = mypkg
mypkg_SOURCES = mypkg.c
if OS1
mypkg_SOURCES += os1.c
else
if OS2
mypkg_SOURCES += os2.c
endif
endif
ou d'attribuer conditionnellement les variables et concaténer tous dans les drapeaux du paquet (que ce soit peuplé ou nul), par exemple:
if OS1
os1_src = os1.c
else
if OS2
os2_src = os2.c
endif
endif
bin_PROGRAMS = mypkg
mypkg_SOURCES = mypkg.c $(os1_src) $(os2_src)
Je l'ai vu dans les deux sens et je peux voir avantages à chacun. Avec le premier, l'action finale réelle d'ajouter ces drapeaux au paquet est claire dans le conditionnel, et vous n'avez pas encombré la ligne avec des variables qui ne signifient rien dans une construction donnée. Dans ce dernier, ce qui est réellement inclus dans le paquet est consolidé sur une ligne et vous n'avez pas d'appendice invisible qui se passe ailleurs, mais vous ne savez pas vraiment ce qui se passe dans ce nom de variable opaque.
Je suppose qu'une autre option est de faire quelque chose comme l'option 2, mais assignez les variables avec le script configure (configure.ac avec AC_SUBST). Mais j'ai gardé mes scripts configure en détectant uniquement les fonctionnalités disponibles, et en choisissant celles à utiliser dans Makefiles.
L'un d'entre eux présente-t-il un inconvénient technique ou un effet secondaire désagréable?
Ceci est une réponse parfaite, merci. C'est également un bon aperçu - s'il y a un atout qui est fourni par l'une des nombreuses options, représentez-les par une seule variable. –