Я строю модульный проект с помощью SCONS.Мне бы хотелось, чтобы несколько программных продуктов были скомпилированы как совокупность нескольких подкомпонентов SW:
Например: * Sconstruct:
Sconscript("SW_PRODUCT_1.Sconscript")
Sconscript("SW_PRODUCT_2.Sconscript")
* с SW_PRODUCT_1.Sconscript:
Sconscript("COMPONENT_A.Sconscript")
Sconscript("COMPONENT_B.Sconscript")
Sconscript("COMPONENT_C.Sconscript")
* И с SW_PRODUCT_2.Sconscript:
Sconscript("COMPONENT_A.Sconscript")
Sconscript("COMPONENT_B.Sconscript")
т.е. я бы хотел, чтобы Builder компилировал один раз каждый компонент как библиотеку, а затем каждый SW_PRODUCT брал список компонентов, которые он хочет построить.Исполняемый файл.
Но у меня возникла следующая проблема: инструмент SCONS возвращает следующую ошибку:
"scons: *** Для одной и той же цели заданы две среды с разными действиями"
Это правда, так как согласно сценарию компоненты A и B вызываются дважды с одинаковыми именами целей, но я надеюсь, что SCONS справится с тем фактом, что несколько целей могут совместно использовать библиотеки.Я ожидал, что SCONS поймет во втором вызове COMPONENTS_A и B, что цель «обновлена», но она не работает таким образом.
Хотя у меня есть обходной путь, компилирующий две разные библиотеки (разные имена) для каждойПРОДУКТ, но это не то, что я хочу, поскольку библиотеки абсолютно одинаковы, и я не хочу тратить время на компиляцию, чтобы собрать ровно N раз.Я хотел бы просто создать один и тот же пул библиотек, а затем выбирать такие библиотеки по требованию для каждого продукта.Есть ли простой способ справиться с этой архитектурой с помощью Scons?