Цитата(AKimbo @ May 13 2008, 18:50)

Знатоки scons'а, помогите рабочим примером скрипта использующего tool отличный от идущих в комплекте. Интересует, собственно, где задаются пути к используемым компилятору/линкеру. Если можно, направьте в правильном направлении - хочу для сборки проекта использовать IAR'овские компилятор/линкер.
Все просто, там не столько сконсовское, сколько питоновое. Сначала можно задать тулзы и пути, например, так:
Код
#-------------------------------------------------------------------------------
#
# Toolkit
#
IAR = os.environ['IAR']
TOOLKIT_PATH = IAR + '\\EW430v410'
ASM = TOOLKIT_PATH + '\\430\\bin\\a430.exe'
CC = TOOLKIT_PATH + '\\430\\bin\\icc430.exe'
Linker = TOOLKIT_PATH + '\\430\\bin\\xlink.exe'
ToolkitIncPath = [TOOLKIT_PATH + '\\430\\inc',
TOOLKIT_PATH + '\\430\\inc\\dlib']
ToolkitLibPath = [TOOLKIT_PATH + '\\430\\lib\\dlib']
ToolkitCfgPath = [TOOLKIT_PATH + '\\430\\config']
Для чего через переменную окружения IAR, думаю, понятно - чтобы не привязываться к абсолютным путям на конкретной машине.
Затем задать тулзы в рабочем словаре env:
Код
env = Environment(TOOLS = {})
env['BUILDERS'] = { 'asmObj' : asm2obj, 'cppObj' : cpp2obj, 'Exe' : build_exe }
env['ASM' ] = ASM
env['CC' ] = CC
env['LINKER' ] = Linker
env['AFLAGS' ] = AFLAGS
env['CFLAGS' ] = CFLAGS
env['LFLAGS' ] = LFLAGS
env['CPPPATH' ] = SourceDirs + ToolkitIncPath
env['FIRST_ENTRY'] = FirstEntry
Пример функции-билдера уже приводил. Полный скрипт во вложении. Это для EW430. Аналогичный есть для EWAVR и для Blackfin (VisualDSP++ 4.5).
Комментарий.
Скрипт строит список файлов с расширенями с, срр и ассемблера, находящихся в директориях, указанных в списке SourceDirs, и на основе этого списка производит сборку проекта. Т.е. если надо добавить файл в проект, достаточно положить его в одну из указанных директорий (если убрать из проекта - соответственно, удалить из директории либо изменить расширение). Поддерживаются мнимые цели clean и rebuild. Скрипт работает со структурой проекта (директории):
Config - скрипты линкера и подобное
Exe - исполняемые (hex и дебажный бинарник)
List - листинги и map файл линкера
Obj - объектные файлы
Если этих директорий не существует, скрипт при первом запуске создает их - чтобы тулзам было куда складывать продукты генерации. Получается аккуратно и удобно.
Успехов.
«Отыщи всему начало, и ты многое поймёшь» К. Прутков