(я думаю, что некоторые вещи отсутствуют в ваших правилах варенья, возможно, из-за форматирования.)
Да, вы определенно можете определить цели отладки и производства с помощью одного и того же правила, используя условные требования.Примером является даже документация install
правила .
Я полагаю, что ваши исходные правила выглядят как
install libCDef
: CDef
: <install-type>LIB
<location>"/home/morpheus/base_install/lib"
: <variant>release ;
install _libCDef_D
: CDef
: <install-type>LIB
<location>"/home/morpheus/base_install/libdebug"
: <variant>debug ;
Вы захотите сделать location
признак зависимости от варианта, например, так:
install libCDef
: CDef
: <install-type>LIB
<variant>release:<location>"/home/morpheus/base_install/lib"
<variant>debug:<location>"/home/morpheus/base_install/libdebug"
;
Что касается второго вопроса, то да, use-project
поможет, хотя в этом нет необходимости.Вы хотите сделать это
exe callFSLR : call_FSLR.cpp ../base/CDef//CDef ;
../base/CDef//CDef
относится к цели с именем CDef
, определенной в проекте (каталоге) ../base/CDef
.Это относится к правилу библиотеки, поэтому при расширенной сборке будет использоваться версия библиотеки в каталоге bin, а не версия, созданная правилом установки.(Это может иметь значение, если у вас есть проблемы с динамической библиотекой.) Кроме того, вам не нужно lib CDef
непосредственно над этим правилом.
Чтобы избежать неуклюжести ../base/CDef
, вы можете использовать use-project
Правило, чтобы дать новое определение для проекта.Затем, если вы реорганизуете структуру каталогов, у вас есть только одно место, чтобы изменить ее.
use-project /CDef-project : ../base/CDef ;
exe callFSLR : call_FSLR.cpp /CDef-project//CDef ;
Другая возможность, если вы собираетесь использовать одну цель в этом одном Jamfile, это использовать правило псевдонима.
alias CDef : ../base/CDef//CDef ;
exe callFSLR : call_FSLR.cpp CDef ;