Я попытался читать документацию, но это довольно непроницаемо, таким образом, я надеюсь, что у кого-то может быть простой ответ. Я хочу определить новый 'вариант', на основе 'отладки', которая просто добавляет некоторые макроопределения к командной строке компилятора, например, "-DSOMEMACRO". Я думаю, что могу делать это как "подвариант" отладки или иначе просто определять новое различное копирование 'отладка', но я даже не уверен, где сделать это. Похоже, что feature.jam в $BOOST_BUILD_DIR/build может быть местом. Возможно, то, что я действительно хочу, является просто новой 'функцией', но мне точно все еще не ясно, что я должен сделать и где, и я не знаю, позволяет ли 'функция' мне направлять продукты сборки к другому каталогу к сборке 'отладки'.
Любые предложения будут цениться. (В случае, если Вы задаетесь вопросом, я должен использовать bjam, так как он был принят как наш корпоративный стандарт.)
Я не совсем уверен, что вы хотите, но есть несколько возможностей.
А. Вы всегда хотите компилировать с определенным макросом SOMEMACRO. В этом случае в Jamfile вашего проекта добавьте
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
;
. Если вам нужно всегда определять SOMEMACRO, вы можете удалить условие
. Если вам нужно установить другие флаги, вы можете использовать
,
и
по мере необходимости.
Б. Вам нужен быстрый переключатель, чтобы включить ваши флаги / определение, возможно, по умолчанию, а может и нет, и сборки с этим включенным несовместимы со сборками, в которых он выключен. В этом случае вам нужна функция.
import feature ;
feature.feature steves-feature : off on
: composite propagated link-incompatible ;
feature.compose <steves-feature>on : <define>SOMEMACRO ;
Правило feature.feature
определяет функцию с именем
с двумя возможными значениями и тремя свойствами. составной
означает, что это функция, состоящая из других функций (в данном случае
). распространено
означает, что любые цели, которые включают цель с этим набором функций, также будут иметь этот набор функций. и link-несовместимость
означает, что цели с
не могут быть объединены с целями с
. (В результате bjam поместит созданные файлы в каталог с именем steves-feature-on
или steves-feature-off
, если эта функция установлена какой-либо целью.)
Эту функцию можно использовать так же, как функцию
, используемую в правиле проекта в приведенном выше разделе. (Вы даже можете добавить его в раздел default-build
правила проекта.)
Обратите внимание, что вы также можете установить функции из командной строки: bjam steves-feature = on
.
С. Вам нужен полный вариант. Я думаю, что идея в том, что у вас есть несколько общих конфигураций сборки с кучей разных функций, которые должны быть установлены вместе. Что ж, если вы уже создали функцию, как указано выше, теперь это легко.
variant steves-debug : debug : <steves-feature>on ;
Этот вариант будет таким же, как вариант отладки
, но с дополнительной функцией
.
Я никогда не использовал правило вариант
, поэтому его, возможно, придется откуда-то импортировать. Кроме того, вы могли бы сделать
variant steves-debug : debug : <define>SOMEMACRO ;
, но я не знаю, создаст ли bjam структуру каталогов или нет. (Вероятно, так и будет.)