2016-06-16 2 views
1

Supposons que nous ayons un fichier source "a.c".Définir la directive Preproccessor pour un seul programme dans le fichier Automake

Le fichier source "AC" est utilisé dans les programmes de construction "Prog1", "Prog2" et « PROG3" .

"Prog1" also uses source file "x.c" 
"Prog2" uses source file "y.c" 
"Prog3" uses source file "z.c" 

On suppose que "ac" utilise une fonction appelée "foo()" qui Par conséquent, "Prog1" sera construit, mais "Prog2" et "Prog3" ne seront pas compilés

Supposons également que "ac" doit appeler la fonction bar1() lors de la construction du programme Prog1, bar2() lors de la construction du programme Prog2, et bar3() lors de la construction du programme Prog3

Comment devrions-nous créer l'autom Ake Makefile.am pour soutenir cela?

J'ai essayé de spécifier des directives de préprocesseur distinctes lors de la construction de chaque programme dans le fichier automake "Makefile.am", mais jusqu'à présent, je ne pouvais pas voir comment cela est fait.

Toute aide serait appréciée. Merci.

+1

Montrez-nous votre tentative. –

Répondre

1

La solution la plus simple? Créez trois règles différentes pour trois fichiers objet différents, tous construits à partir du fichier source a.c. Ensuite, chaque règle peut facilement ajouter des drapeaux supplémentaires nécessaires pour la construction spécifique.

0
bin_PROGRAMS = prog1 prog2 prog3 

prog1_SOURCES = a.c x.c 
prog1_CPPFLAGS = -DPROG1 

prog2_SOURCES = a.c y.c 
prog2_CPPFLAGS = -DPROG2 

prog3_SOURCES = a.c z.c 
prog3_CPPFLAGS = -DPROG3 

Mais pour utiliser ce que vous devez vous assurer que vous appelez AM_PROG_CC_C_O dans votre configure.ac, puisque a.c est ensuite compilé trois fois avec différentes options.