Несколько слов о реструктуризации подсистем WinDev и ZXDev. Они подверглись изменению структуры папок в целях бОльшей логичности и универсальности сборочных скриптов. Итак:
Lib\Bin — сборочные скрипты как для сборки библиотек, состоящих из нескольких модулей, так и универсальные compile.bat и build.bat, заточенные соответственно для компиляции любого модуля (чтобы выявить возможные ошибки времени компиляции) и сборки библиотеки, состоящей из одного модуля.
Одноимённые с модулями скрипты унифицированы чтобы иметь наиболее ясную структуру. Например:
Код: "WINBATCH"
@REM Build the library Kol
@REM =====================
:tcc
@SET Lib=..\Kol.a
@IF EXIST %Lib% DEL %Lib%
@CALL ..\Bin\smart %Lib% KolTypes -noinit
@CALL ..\Bin\smart %Lib% KolStrings -noinit
@CALL ..\Bin\smart %Lib% KolRegistry -noinit
@CALL ..\Bin\smart %Lib% KolWindows
smart указывает на то, что данный модуль нужно смартлинковать (с помощью утилиты smartlib; solid обозначает, что не нужно. Ключик -noinit применяется для тех модулей, которые не требуют инициализации. Это немного некрасиво, но это лишь для целей оптимизации; и пока лучше не придумывается. А вернее даже придумывается (директива (*$NOINIT*)), но пока ещё не реализовано.
Остаётся открытым вопрос про многомодульные проекты пользовательского уровня. Подумываю над подобной же унификацией некоторого универсального скрипта для сборки и пользовательского скрипта типа главного проектного файла, в котором будут задаваться специфические для данного проекта отличия, оформленные в стиле скрипта, показанного выше, т.е. максимально наглядно.
Lib\C — исходники библиотек, написанных на языке Си. Раньше они хранились просто в /Lib. Теперь же там хранится продукт: те самые двоичные библиотеки, для создания которых подсистемы собственно и нужны.
Lib\Mod — исходники библиотек, написанных на Обероне имеют расширение .Mod, биндинги к сишным библиотекам (или dll, или so) имеют расширение .Def.
Lib\Obj — исходники на языке Си, не написанные программистом, а сгенерированные средой из обероновских. Всякий раз при компиляции или сборке скрипт проверяет существование одноимённого с модулем сишного исходника сначала в папке
Lib\C, если находит, то реализация модуля считается написанной на Си, а Оберон-часть считается биндингом; если же в
Lib\C сишного исходника нет, то модуль считается написанным на Обероне, а значит компилируются и собираются исходники, находящиеся в
Lib\Obj, которые по сути являются объектными файлами, просто в формате Си.
В подсистеме WinDev есть также папка:
Lib\Obj64 — для 64-битной версии объектных файлов. Эту папку пришлось ввести потому, что генерируемые сишные исходники для 32 бит и 64 бит могут отличаться.
Lib\Sym — символьные файлы. Текстовое представление хранить оказалось не нужным: его очень просто получить с помощью браузера
XDev -> Show Definition.
Lib — готовые библиотеки, сгенерированные с помощью подсистемы, а также их конфигураторы, т.е. в данной реализации это *.h-файлы. Мы здесь
не прячем их,
Reobne. Мы наоборот выставляем наружу интерфейсы, опции, параметры библиотек. А прячем реализацию.