No estoy muy seguro de lo que quiere, pero hay una serie de posibilidades.
A. Siempre desea compilar con la macro SOMEMACRO definida. En cuyo caso, en el Jamfile para su proyecto de complemento
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 necesita SOMEMACRO siempre se define, puede eliminar la condición <variant>debug:
. Si necesita establecer otros indicadores, puede usar <cflags>
, <cxxflags>
y según corresponda.
B. Quiere un cambio rápido para activar sus flags/definir, quizás de forma predeterminada, quizás no, y las compilaciones con él no son compatibles con las compilaciones que no están activadas. En cuyo caso quieres una función.
import feature ;
feature.feature steves-feature : off on
: composite propagated link-incompatible ;
feature.compose <steves-feature>on : <define>SOMEMACRO ;
La regla feature.feature
define una función denominada <steves-feature>
con dos valores posibles y tres propiedades. composite
significa que es una característica compuesta de otras características (en este caso <define>SOMEMACRO
). propagated
significa que cualquier objetivo que incluya un objetivo con este conjunto de características también tendrá esta característica configurada. y link-incompatible
significa que los objetivos con <steves-feature>on
no se pueden combinar con objetivos con <steves-feature>off
. (Como resultado, bjam pondrá los archivos creados bajo un directorio llamado steves-feature-on
o steves-feature-off
si esta característica es fijado por cualquier objetivo.)
Esta característica se puede utilizar igual que la característica <define>
utilizado en la regla de proyectos en los anteriores sección. (Incluso puede agregarlo a una sección default-build
de la regla del proyecto.)
Tenga en cuenta que también puede establecer funciones desde la línea de comandos: bjam steves-feature=on
.
C. Quiere una variante completa. Creo que la idea es si tienes algunas configuraciones comunes de compilación con un montón de características diferentes que se deben configurar juntas. Bueno, si ya ha creado la función como se indica arriba, ahora es fácil.
variant steves-debug : debug : <steves-feature>on ;
Esta variante será la misma como la variante debug
pero con la característica adicional <steves-feature>on
.
Nunca utilicé la regla variant
, por lo que podría necesitar ser importada de alguna parte.Además, es posible que pueda hacer
variant steves-debug : debug : <define>SOMEMACRO ;
pero no sé si bjam creará la estructura del directorio o no. (Probablemente lo hará).
Gracias, caso B o tal vez C es lo que estoy buscando, probaré B primero porque es el más simple. Gracias por una explicación muy detallada. –
Si esto funciona, debe hacer clic en la marca de verificación junto a la respuesta para marcarla como respondida. De esa manera, otros saben que la pregunta está respondida. Y obtengo algo de crédito. :-) (Tampoco ha respondido a sus preguntas anteriores) – AFoglia
Disculpas, ahora lo he seleccionado, todavía me estoy acostumbrando al protocolo. –