Je ne suis pas tout à fait sûr de ce que vous voulez, mais il y a un certain nombre de possibilités.
A. Vous voulez toujours compiler avec la macro unemacro définie. Dans ce cas, dans le Jamfile pour votre projet ajouter
project
: requirements # These are requirements for this project
# If compiling debug, define SOMEMACRO
<variant>debug:<define>SOMEMACRO
: usage-requirements
# These are requirements projects using this project must have
<variant>debug:<define>SOMEMACRO
;
Si vous avez besoin unemacro toujours défini, vous pouvez supprimer la condition <variant>debug:
. Si vous devez définir d'autres indicateurs, vous pouvez utiliser <cflags>
, <cxxflags>
et selon le cas.
B. Vous voulez un commutateur rapide pour allumer vos drapeaux/définir, peut-être par défaut, peut-être pas, et construit avec elle sur ne sont pas compatibles avec construit avec elle au large. Dans ce cas, vous voulez une fonctionnalité.
import feature ;
feature.feature steves-feature : off on
: composite propagated link-incompatible ;
feature.compose <steves-feature>on : <define>SOMEMACRO ;
La règle feature.feature
définit une fonction appelée <steves-feature>
avec deux valeurs possibles et trois propriétés. composite
signifie que c'est une fonctionnalité composée d'autres caractéristiques (dans ce cas <define>SOMEMACRO
). propagated
signifie que toutes les cibles qui incluent une cible avec cet ensemble de fonctionnalités auront également cet ensemble de fonctionnalités. et link-incompatible
signifie que les cibles avec <steves-feature>on
ne peuvent pas être combinées avec des cibles avec <steves-feature>off
. (En conséquence, bjam mettra les fichiers créés dans un répertoire nommé steves-feature-on
ou steves-feature-off
si cette fonction est définie par une cible.)
Cette fonction peut être utilisée comme la fonction <define>
utilisée dans la règle de projet ci-dessus section. (Vous pouvez même l'ajouter à une section default-build
de la règle de projet.)
Notez que vous pouvez également définir des entités à partir de la ligne de commande: bjam steves-feature=on
.
C. Vous voulez une variante complète. Je pense que l'idée est de savoir si vous avez quelques configurations de construction communes avec un tas de fonctionnalités différentes qui devraient être définies ensemble. Eh bien, si vous avez déjà créé la fonctionnalité comme ci-dessus, c'est maintenant facile.
variant steves-debug : debug : <steves-feature>on ;
Cette variante sera la même que la variante debug
mais avec la caractéristique supplémentaire <steves-feature>on
.
Je ne l'ai jamais utilisé la règle variant
, il faudra peut-être importé de quelque part.En outre, vous pourriez être en mesure de faire
variant steves-debug : debug : <define>SOMEMACRO ;
mais je ne sais pas si bjam va créer la structure de répertoire ou non. (Ce sera probablement le cas.)
Merci, cas B ou peut-être que C est ce que je cherche, je vais d'abord essayer B car c'est le plus simple. Merci pour une explication très détaillée. –
Si cela fonctionne, vous devez cliquer sur la coche à côté de la réponse pour marquer comme réponse. De cette façon, d'autres savent que la question est répondue. Et j'ai un peu de crédit. :-) (Vous n'avez pas non plus fait de réponses acceptées à vos questions précédentes.) – AFoglia
Excuses, je l'ai maintenant sélectionné, je m'habitue toujours au protocole. –