Non sono abbastanza sicuro di quello che volete, ma ci sono molte possibilità.
A. Si desidera sempre compilare con la macro SOMEMACRO definita. In questo caso, nella Jamfile per il vostro progetto aggiungere
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
;
Se avete bisogno di SOMEMACRO sempre definito, è possibile rimuovere la condizione <variant>debug:
. Se è necessario impostare altri flag, è possibile utilizzare <cflags>
, <cxxflags>
e in base alle esigenze.
B. Si desidera un passaggio rapido per attivare i flag/definire, forse per impostazione predefinita, forse no, e build con esso non sono compatibili con build senza. In tal caso, si desidera una funzionalità.
import feature ;
feature.feature steves-feature : off on
: composite propagated link-incompatible ;
feature.compose <steves-feature>on : <define>SOMEMACRO ;
Il feature.feature
regola definisce una funzione chiamata <steves-feature>
con due valori possibili e tre proprietà. composite
significa che si tratta di una funzionalità composta da altre funzionalità (in questo caso <define>SOMEMACRO
). propagated
significa che qualsiasi obiettivo che include un obiettivo con questo set di funzionalità avrà anche questo set di funzionalità. e link-incompatible
significa che gli obiettivi con <steves-feature>on
non possono essere combinati con gli obiettivi con <steves-feature>off
. (Di conseguenza, bjam metterà i file creati in una directory di nome steves-feature-on
o steves-feature-off
se questa funzione è impostata da qualsiasi destinazione.)
Questa funzione può essere utilizzata proprio come la funzione <define>
utilizzato nella regola di progetto in quanto sopra sezione. (È anche possibile aggiungerla a una sezione default-build
della regola del progetto.)
Nota che è anche possibile impostare funzioni dalla riga di comando: bjam steves-feature=on
.
C. Si desidera una variante completa. Penso che l'idea sia se si hanno alcune configurazioni di build comuni con un sacco di caratteristiche diverse che dovrebbero essere impostate insieme. Bene, se hai già creato la funzione come sopra, ora è facile.
variant steves-debug : debug : <steves-feature>on ;
Questa variante sarà la stessa come la variante debug
ma con la caratteristica aggiuntiva <steves-feature>on
.
Non ho mai utilizzato la regola variant
, quindi potrebbe essere necessario importarla da qualche parte.Inoltre, potresti essere in grado di fare
variant steves-debug : debug : <define>SOMEMACRO ;
ma non so se bjam creerà la struttura della directory o meno. (Probabilmente lo sarà.)
Grazie, caso B o forse C è quello che sto cercando, proverò prima B dal momento che è più semplice. Grazie per una spiegazione molto dettagliata. –
Se funziona, è necessario fare clic sul segno di spunta accanto alla risposta per contrassegnarlo come risposta. In questo modo, gli altri sanno che la domanda ha una risposta. E ho un po 'di credito. :-) (Non hai ancora risposto alle risposte alle tue precedenti domande.) – AFoglia
Mi scuso, ora l'ho selezionato, mi sto ancora abituando al protocollo. –