У меня следующая проблема: у нас есть большой проект (унаследованный от другой компании), компилирующий много субмул SW. Конструкция FW подразделяется на несколько скриптов SC, которые мы вызываем из основного SConstruct.Дело в том, что все подмодули имеют одни и те же флаги компиляции и определяют.
Я намеревался решить эту проблему следующим решением:
В основной точке входа SConstruct мы определяем определенные параметры компиляции:
COMPILER_FLAGS = '-g \ -O3 \ -fshort-double \ -gdwarf-2 \ -Wall \ -W \ -Werror-неявное-объявление-функции \ -Wno-unused-variable \ -Wno-empty-body \ -Wbad-function-cast \ -Wstrict-prototypes \ -Wmissing-noreturn \ -Wnested-externs \ -fno-builtin \ -Wno-unused-параметр \ -Wno-указатель-на-int-cast \..........
Эти COMPILER_FLAGS представляют среду конструирования, которая передается каждому сценарию в качестве аргумента. Затем внутри каждого сценария я создаю клон среды и изменяю некоторые параметры для каждого.субмодуль
* SConstruct
log_path = os.path.join('../../CDD/LogPrint/Build/logprint.SC')
objects += SConscript(log_path, exports='env', variant_dir=log_build_dir, duplicate=1)
dbg_exe = env.Program(dbg_path, objects)
* logprint.SC
\#Customize Compilation options for this component
own_env = env.Clone()
own_env['COMPILER_FLAGS'] += '-O0 '
\# COMPILE SOURCE FILES
objects += own_env.Library(sources)
\# RETURN
Return('objects')
Дело в том, что когда я компилирую (и собираю библиотеку) для подмодуля logprint, я надеваюне вижу расширенных собственных скомпилированных flAGS.Я до сих пор вижу в командной строке компиляции напечатанные исходные опции env, унаследованные от основного файла SConstruct.
Есть ли причины, по которым это может происходить?Есть ли какая-либо опция / конфигурация SCONS верхнего уровня, устанавливающая такое поведение?Позвольте мне также подчеркнуть, что я исследовал эту концепцию env.Clone в новом небольшом проекте с нуля, и там он работает.Так что мне интересно, может ли какая-то верхняя конфигурация SCONS блокировать поведение own_env.Library, которое я хочу в «большом» проекте.