2016-09-17 1 views
0

Alors quelques-uns des *.c fichiers qui bin_PROGRAMS dans mon automake dépendent d'une no_common.h qui est généré en créant un lien symbolique de main.h, maintenant avant certains changements récents dans mon Makefile.amno_common.h était inclus dans bin_PROGRAMS de sorte qu'il serait généré comme il se doit, mais cela l'a fait aussi pour qu'il soit installé dans /usr/bin à côté des binaires produits par make, ce qui n'est pas ce que je veux.Spécifiez une dépendance de `bin_PROGRAMS` sans dire Automake comment construire` bin_PROGRAMS`

Je sais que je pouvais utiliser quelque chose comme ça dans mon dossier Makefile.am:

$(bin_PROGRAMS): no_common.h 

mais ne serait pas que cela signifie que je dois dire make exactement ce que je veux bin_PROGRAMS à construire? Remettrait no_common.h en bin_PROGRAMS, puis en l'ajoutant au noinst_HEADERS pour résoudre ce problème?

Est-ce que cela peut être fait, y a-t-il d'autres trucs que je pourrais utiliser, ou est-ce que je demande simplement quelque chose qui ne peut pas être fait?

NOTE: Je ne veux pas changer le fichier #includeno_common.h-main.h dans les fichiers concernés. (Oui, je sais que je suis probablement difficile).

Répondre

2

Automake fournit la variable BUILT_SOURCES pour résoudre ce problème.

Un fichier mentionné dans BUILT_SOURCES sera créé au début de make - avant toutes les compilations. Cependant, aucune autre dépendance n'est implicite; c'est-à-dire, le fichier est créé mais pas compilé et n'est pas supposé être une dépendance de tout autre .o particulier; ce qui est juste ce que tu veux.

Donc, dans votre cas, vous simplement faire:

BUILT_SOURCES = no_common.h