Reobne давно критикует XDev за то, что для сборки нужно писать батники, а для него это неподъёмный барьер.
Посему наконец предприняты шаги для упрощения написания этих самых нехороших батников. Я исхожу из того, что хранить настройки проекта всё равно где-то нужно, поэтому мы будем хранить их в удобных для редактирования текстовых файлах, т.е. в батниках.
Но упрощённых. Теперь у нас есть много опций, которые мы можем задавать, не опасаясь запутаться в тонкостях вызова SDCC и линковки. Конечно всё это ещё нужно тестировать. Но зато:
a) поддерживаются многомодульные проекты;
b) поддерживается хранение символьных файлов в папке /Obj (без отдельной папки /Sym);
c) поддерживается хранение исходников модулей в папке проекта (без отдельной папки /Mod).
Для батников по-прежнему используется папка /Bin, также по-прежнему используется папка /Obj, в которую обязательно нужно положить Ofront.par, описывающий особенности платформы.
Вот так выглядит самый типичный Compile.bat
Код: "WINBATCH"
@IF NOT "%XDev%"=="" GOTO XDev
@ECHO Please set system variable XDev=X:\Path\To\XDev
@PAUSE
@EXIT
:XDev
@SET MainMod=MyGame
%XDev%\ZXDev\Bin\Compile %1
MainMod можно и не задавать, а в одномодульном проекте всё и так ясно. Но для многомодульного это полезно, чтобы при нажатии F12 (Build) среда знала, какой модуль является главным, и скомпилировала текущий, а собрала главный.
А вот Build.bat
Код: "WINBATCH"
@ECHO OFF
IF NOT "%XDev%"=="" GOTO XDev
ECHO Please set system variable XDev=X:\Path\To\XDev
PAUSE
EXIT
:XDev
SET CodeAdr=32832
SET DataAdr=63488
SET Options=--no-std-crt0 --opt-code-size
IF EXIST .debug SET Options=--max-allocs-per-node 20 %Options%
SET Target=TAP
SET MainMod=MyGame
SET Modules=Rsrc.rel Music.rel AI.rel
SET Clean=TRUE
%XDev%\ZXDev\Bin\Build %1
Это был продвинутый Build.bat, а типичный выглядит гораздо проще:
Код: "WINBATCH"
@IF NOT "%XDev%"=="" GOTO XDev
@ECHO Please set system variable XDev=X:\Path\To\XDev
@PAUSE
@EXIT
:XDev
@SET Target=REM
%XDev%\ZXDev\Bin\Build %1
Не заданные опции берутся по умолчанию.
Ещё планирую добавить опциональную упаковку целевого бинарника hrum'ом и hrust'ом.
В приложенном архиве заготовка для двухмодульного проекта. И конечно же перекачайте XDev/ZXDev.