Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 28 мар 2024, 13:52

Часовой пояс: UTC + 2 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Будни разработки XDev
СообщениеДобавлено: 07 мар 2013, 18:21 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Сейчас занимаюсь вот чем. На повестке дня пару вопросов, а поскольку посоветоваться почти не с кем, пишу сюда своеобразные “дневниковые” записки.

1. Определение главного модуля.

В Оберон-системах этот вопрос вообще неактуален. Но мы, поскольку XDev планируется для кроссплатформенной (и отчуждаемой от среды) разработки, приходим к вопросу: с какого же модуля начать исполнение программы?

Сейчас в XDev можно воспользоваться средством, которое предоставляет Ofront-подсистема:

Ofront -> Tool -> generate main program

Если эта галочка установлена, то для кода инициализации текущего модуля (BEGIN) генерируется исходник на Си со входом — функцией main. До сих пор этой возможности мне хватало, но надо решить этот вопрос кардинально, ведь это неправильно, когда в процессе доработки сразу несколько модулей приходится то снимать, то устанавливать галочку.

Желание как-то автоматизировать этот процесс наталкивает на следующие пути решения:

    a) по нажатию F11 (компиляция) среда автоматически сбрасывает галочку “главный модуль”, по F12 (сборка) — автоматически устанавливает. Привожу этот пункт только для полноты картины, ибо здесь есть прокол: если дорабатывается не главный модуль, то перед сборкой (нажатием F12) надо будет активизировать документ с главным модулем, иначе среда посчитает главным активный модуль.

    b) Задавать главный модуль где-то в отдельном файле конфигурации проекта. (Где можно сохранить ещё, если не файле конфигурации?)

    c) Задавать его в меню XDev -> Установить главный модуль (как это сделано в IDE Oberon-07/11 от akron). Здесь есть минус — знание о главном модуле будет теряться, если его опять же где-то не сохранить. И мы возвращаемся к пункту b.

    d) Трудное решение, и понравится не всем, однако я склоняюсь именно к нему. Ввести на уровне исходника директиву (* $Main *) или (* $SET Main *) (замаскированную для совместимости с другими реализациями под комментарий), которая однозначно даст Ofront’у указку, что данный модуль — главный. Попутно с этим можно (даже желательно) ввести подобные же директивы для других опций Ofront’а.
Код: "OBERON"
  1. MODULE XDevHello; (* $Main *)
  2. IMPORT C := Console;
  3.  
  4. BEGIN
  5. C.SetColors(C.CyanOnBlue);
  6. C.WriteStr("Hello Cross-platform World");
  7. END XDevHello.

Всем хорош и прекрасен для меня именно пункт d, хотя он же и наиболее трудоёмок в реализации. Из минусов предвосхищаю упрёки в “возвращении к Турбо Паскалю” и его директивам, задаваемым таким способом. Однако если вам есть что сказать по данному вопросу, милости прошу.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Будни разработки XDev
СообщениеДобавлено: 07 мар 2013, 21:45 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
2. В каком именно виде хранить структуру файлов проекта.

a) Произвольный путь извне подсистемы разработки (для маленьких проектов):

Module.Mod
Module.h
Module.c
Module.sym

Каталог Bin не присутствует (текущая подсистема задаётся из меню XDev) или присутствует, и тогда скрипты в ней использутся для компиляции и сборки, также может быть одноименный с модулем скрипт для сборки проекта:

Module.bat

Каталог, в котором хранятся все эти файлы, является текущим в момент запуска компилятора Си, поэтому служебные и объектные файлы создаются в нём же. Для чистки рабочего каталога от этих временных файлов традиционно используется скрипт +Clear.bat

b) Произвольный путь извне подсистемы разработки (для больших проектов):

Module1.Mod (или Mod/Module1.Mod)
Module2.Mod (или Mod/Module2.Mod)
Obj/Module1.h
Obj/Module1.c
Obj/Module2.h
Obj/Module2.c
Sym/Module1.sym
Sym/Module2.sym

Подобно тому же, что и выше, только сишные исходники помещаются в каталог Obj, а символьные файлы — в Sym.

Библиотеки для случаев a и b ищутся в каталоге Lib выбранной подсистемы разработки. Или же папка Lib также может присутствовать, и библиотеки размещаются в ней.

Отличие a от b: XDev проверяет, существуют ли подкаталоги Obj и Sym, и если да, то символьные и объектные файлы помещаются туда; если же нет, то они хранятся в каталоге проекта.

Проблема: как задавать подсистему разработки, если она может быть не единственной? (Допустим, это кроссплатформенный пример, который можно собрать и подсистемой ZXDev, и подсистемой WinDev). Как задавать схему трансляции, если она может быть в подсистеме не единственной? (Например, подсистема WinDev может обеспечивать три схемы трансляции: Ofront/MinGW, Ofront/TCC и Ofront/Cygwin). Задавать конечно можно всякий раз из меню, но запоминать ли выбранную подсистему и схему трансляции, и где именно?

c) Проект хранится в каталоге подсистемы разработки.

Здесь уже не нужно задавать подсистему. Скрипты берутся из каталога Bin, объектники помещаются в Obj, а символьные файлы в Sym. Библиотеки в Lib. Исходники модулей по-прежнему в корне подсистемы (или в каталоге Mod). Текущим при запуске компилятора Си считается каталог Obj, служебные файлы помещаются в него же.

d) Библиотеки подсистемы разработки.

Скрипты для сборки библиотеки берутся из каталога Lib/Bin, объектники помещаются в Lib/Obj, а символьные файлы в Lib/Sym. Исходники библиотек, написанных на Си, помещаются в корне Lib (Obj задействован под автоматически сгенерированные Ofront’ом исходники, которые могут быть одноименными), исходники библиотек написанных на Обероне помещаются в каталоге Lib/Mod.

Также обсуждаемо.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Будни разработки XDev
СообщениеДобавлено: 09 мар 2013, 20:29 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Кроссплатформенный модуль Console и демонстрационная программка, собранная подсистемами ZXDev и WinDev. Отдельно оцените размер целевых файлов и независимость их от Оберон-среды исполнения. В процессе разработки XDev на это делается и будет делаться особый упор.


Вложения:
XDevHello.png
XDevHello.png [ 14.54 КБ | Просмотров: 15972 ]
Комментарий к файлу: XDevHello.tap для ZX Spectrum
XDevHello.tap [200 байт]
Скачиваний: 666
Комментарий к файлу: XDevHello.exe для Win32
XDevHello.exe.zip [990 байт]
Скачиваний: 503
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Будни разработки XDev
СообщениеДобавлено: 06 июн 2017, 22:01 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Добавил в XDev поддержку исходников в кодировке UTF-8. Теперь XDev поддерживает три текстовых формата исходников (плюс свой собственный бинарный формат .odc):

    1. Windows 1251 (конец строки 0DX+0AX).
    2. UTF-8 как в Блокноте Windows (BOM в начале файла, конец строки 0DX+0AX). Такой формат понимают даже редакторы для Linux, например, pico и gedit.
    3. UTF-8 как в Linux (без BOM или с BOM, конец строки 0AX).

Среда при открытии исходника определяет формат и кодировку на основе его структуры, и потом сохраняет его в том же формате и кодировке.

И, поскольку вариант 1 не поддерживают программы в Linux, а вариант 3 не поддерживают программы в Windows, исключительно из соображений поддержки популярными ОС, форматом по умолчанию выбран вариант 2.

Недоработка, которую хотелось бы в будущем исправить:

    Меню «File -> Save As...» в XDev сейчас такое же как в BlackBox. И нет возможности перекодировать исходник из одной кодировки в другую в самой среде. Для этого нужно использовать дополнительный софт (например, тот же Блокнот Windows или Syn Text Editor).


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Будни разработки XDev
СообщениеДобавлено: 08 июн 2017, 13:00 
Не в сети
Администратор
Аватара пользователя

Сообщения: 108
Олег, а почему бы не добавить UTF8 конвертер? И тогда можно будет выбирать.

Как пример вот: http://www.zinnamturm.eu/downloadsAC.htm#CpcUtf8Conv


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Будни разработки XDev
СообщениеДобавлено: 08 июн 2017, 22:24 
Не в сети
Аватара пользователя

Сообщения: 1019
Откуда: Днепропетровская обл.
Иван, поскольку XDev — это не универсальная сборка BlackBox, прицел взят на то, чтобы убрать из диалогов Open/Save все лишние форматы, для представления программных исходников их там слишком много. Плюс подсистема CpcUtf8Conv не заточена под раскраску синтаксиса текстовых исходников.

Так что эту задачу не решить простым использованием готовой подсистемы. Но кодом из CpcUtf8Conv я конечно поживился. ;-)


Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 2 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
© VEDAsoft Oberon Club