UniOffice/Build/BuildInWindows
Сборка Unioffiсe@Etersoft в OC Windows
Инструменты необходимые для сборки Unioffice@Etersoft
1. git - программа для управления git репозиторием под ОС Windows. (Необходима, если вы хотите, автоматически обновлять исходники, в противном случае эта программа вам не нужна)
2. DevCpp - бесплатная среда разработки от Bloodshed Software, использующая компилятор mingw (компилятор имеется в дистрибутиве и не требует доп. настройки). Последняя версия 4.9, но возможно подойдет и её дальнейшая разработка WxDevCpp
Установка необходимых инструментов
Git for Windows
Последовательность установки:
- Запускаем установочный файл
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_git/1.PNG
в этом окне жмем дальше. Далее будет показана лицензия с которую, надо принять для продолжения установки.
- Выбираем папку для установки git
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_git/2.PNG
- Добавляем интеграцию в explorer и значки быстрого доступа, если это необходимо
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_git/3.PNG
- следующем окне выбираем первый вариант установки
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_git/4.PNG
- Выбираем использование OpenSSH
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_git/5.PNG
- На этом установка GIT завершена, далее необходимо настроить репозитории.
DevCpp
Последовательность установки:
- Запускаем установочный файл, выбираем язык установки, соглашаемся с лицензией
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_devcpp/1.PNG
- Выбираем тип установки - Full
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_devcpp/2.PNG
- Выбираем паку для установки среды разработки
- На этом установка GIT завершена, при первом запуске среды необходимо сделать несколько настроек.
- Выбрать язык интерфейса
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_devcpp/3.PNG
- В следующем окне выбираем первый пункт. Этим говорим среде, что необходимо перечитать все заголовочные файлы - необходимо для удобства навигации и поиска определений функций.
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_devcpp/4.PNG
После этого можно закрыть DevCpp. На этом установка заканчивается и можно переходить к созданию проекта и копированию репозитория
Настройка, получение и обновление Git репозитория
Настройка и получение
При первом запуске GitGUI вы увидите окно представленное на картинке.
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_git/nastroika_1.PNG
Здесь необходимо выбрать пункт "Склонировать существующий репозиторий"
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_git/nastroika_2.PNG
Далее необходимо ввести ссылку на удаленный репозиторий, в данном случае -
и указать каталог, где будет хранится копия репозитория. На картинке это - "C:/Unioffice_Etersoft".
После того как указаны параметры клонирования, нажимаем кнопку "Склонировать".
Операция "Клонирование" занимает некоторое время, которое зависит от скорости соединения с internet
Как только клонирование будет завершено, будет показано окно изображенное ниже. Его можно закрыть.
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_git/nastroika_3.PNG
Теперь мы можем увидеть, что у нас имеется полная копия репозитория.
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_git/nastroika_4.PNG
На этом получение удалённого репозитория закончено.
Обновление репозитория
Запускаем GitGUI
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/update_git/1.PNG
- Выбираем ранее созданный свой локальный репозиторий. Достаточно щелкнуть на ссылку с его именем.
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/update_git/2.PNG
- После того как будет показано главное окно, переходим к пункту "Внешние репозитории->Получение из -> Origin"
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/update_git/3.PNG
- Далее появится окно в котором будет отображен процесс обновления
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/update_git/4.PNG
- После того как обновление завершиться, можно закрыть это окно.
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/update_git/5.PNG
- Теперь необходимо обновить файлы в репозитории, т.к. пока обновления только скачены, но не применены. Для этого переходим к пункту "Репозиторий -> История всех ветвей наглядно"
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/update_git/6.PNG
- Выделить строку с надписью "Remote/origin/master" и в контекстном меню выбрать "reset master branch to here".
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/update_git/7.PNG
- В появившемся окне выбрать "Hard" (Внимание, изменения сделанные в локальном репозитории будут потеряны, что бы не потерять их следует выбирать Mixed или Soft)
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/update_git/8.PNG
- После того как данная операция будет закончена (на рисунке видно, что теперь наша ветка master совпадает с веткой mster удаленного репозитория), необходимо пересобрать проект в DevCpp. Открыть ранее созданный проект и запустить "Rebuild All"
На этом обновление репозитория завершено. О том как подготовить патчи будет рассказано в другой статье.
Настройка проекта в DevCpp
Если вы используете Git, то выше мы рассмотрели как поличить репозиторий себе на компьютер. Если же вы не хотите испоользовать Git исходники проекта можно скачать здесь.
Для генерации заголовочных файлов для описания интерфейсов из IDL, при сборке в Linux используется утилита widl, входящая в wine-tools. К сожалению использовать ее в windows не получилось. Поэтому необходимо скачать три файла находящиеся по ссылке ftp://ftp.etersoft.ru/pub/Etersoft/UniOffice@Etersoft/gen-source (при внесении изменний в IDL эти файлы обновляются, но не чаще). Файлы необходимо поместить в папку "unioffice_excel" входящую в репозиторий UniOffice.
- (Возможно для генерации этих файлов в windows можно использовать midl.exe входящий в Visual Studio)
- После того, как файлы будут помещены в ваш локальный репозиторий, запускаем DevCpp.
Этапы настройки проекта в DevCpp:
- Создание нового проекта.
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_devcpp/nastroika_1.PNG
Переходим к пункту меню "File->New->Project"
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_devcpp/nastroika_2.PNG
Выбираем:
- тип проекта - "Dinamic Library DLL"
- язык - "С"
- имя - "unioffice_excel"
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_devcpp/nastroika_3.PNG
Сохраняем проект в папке "unioffice_excel" вашего локального репозитория
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_devcpp/nastroika_4.PNG
С помощью пункта меню "Remove file", удаляем все файлы нового проекта, сгенерированные DevCpp, без их сохранения.
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_devcpp/nastroika_5.PNG
С помощью пункта меню "Add file", добавляем в проект, файлы unioffice_excel.
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_devcpp/nastroika_6.PNG
Можно добавить все файлы сразу за один раз.
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_devcpp/nastroika_7.PNG
Так должно выглядеть дерево проекта после добавления всех файлов.
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_devcpp/nastroika_8.PNG
Далее необходимо указать какие библиотеки использовать при линковке. Для этого переходим к пункту "Project->Project Options".
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_devcpp/nastroika_9.PNG
В появившемся окне переходим к вкладке "Parameters" и в окошке "Linker", второй строкой дописываем следующую строку:
-ladvapi32 -lole32 -loleaut32 -luser32 -lkernel32 -lshell32 -luuid -lshlwapi -lmsvcrt
ftp://ftp.etersoft.ru/pub/people/ivan/unioffice/setup_devcpp/nastroika_10.PNG
Все. Проект сделан. Теперь осталось его собрать, для этого переходим к пункту "Execute->Rebuild All". После того как проект соберётся (в окне DevCpp появятся несколько Warnings, не обращаем на них внимания), в папке "unioffice_excel" локального репозитория появится файл unioffice_excel.dll
Для установки новой библиотеки в системе, необходимо скопировать файлы unioffice_excel.dll и unioffice_excel.tlb в папку "%WinDir%\System32\" и после этого выполнить команду
regsvr32.exe unioffice_excel.dll
После того как появится окно с надписью "DllRegisterServer в unioffice_excel.dll завершено успешно" unioffice_excel будет установлен в системе. Для тестирования можно использовать тесты находящиеся в репозитории.
О тестировании, ведение логов и сообщении об ошибках можно почитать здесь.