2015-08-07 6 views
0

Мы используем boost в нашем проекте, который мы строим из исходного кода с помощью Command Builder. Но я столкнулся с проблемой на платформах, где мы поддерживаем несколько разных сборок. На Linux-машине мы поддерживаем Linux-версию & для Android.SCons Custom Builder flag

Здесь, если я запустил сборку Android, а затем сборку Linux, которую строитель перестраивает. т. е. поскольку исходные имена целевых файлов & одинаковы (хотя двоичные файлы не являются).

Я хочу, чтобы мой строитель знал, какая версия boost строится. Я хотел бы использовать что-то похожее на переменную CPPDEFINES. Всякий раз, когда значение этой переменной изменяется в программе или библиотеке, цели восстанавливаются.

Возможно ли это? Пока что лучшая идея - использовать параметр пути сканера. Но это не выглядит правильным.

Как создать конкретную переменную строителя, которую SCons должен использовать (например, источники & целей) для запуска сборки. т. е. восстановление за счет изменения MYVARIABLE.

ответ

3

Вы не хотите создавать специальную переменную-строитель, которую SCons мог бы использовать (с некоторыми дополнительными дополнениями), чтобы решить, какую версию программного обеспечения она должна строить. Вы ищете «варианты сборки», как описано в UserGuide (http://www.scons.org/doc/production/HTML/scons-user.html), гл. 15 «Разделение источников и сборка каталогов». Это позволит вам создать несколько «вариантов» (разные PATH, CPPPATH, независимо, настройки) параллельно (полная поддержка «-j») из тех же источников. Это планируемая схема для задачи сборки, как вы ее описываете, и каждый другой взломан, который сначала кажется соблазнительным, может привести к проблемам позже.

Не забудьте также использовать метод VariantDir(), вместо этого используйте опцию «variant_dir =» для вызова SConscript() (см. Раздел 15.1 в UserGuide).