Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Есть ли готовые исходники Aegisub для visual studio 2013 с зависимостями
Форум на CrossPlatform.RU > Библиотеки > wxWidgets
antoxabond
Есть ли у кого готовые исходники Aegisub для visual studio 2013 с зависимостями?
Хотелось бы изменить немного функционал программы ( облегчить до лайт версии без видео и звука, а так же добавить пакетную обработку ).
Брал исходники с Git, а они даже на родной студии 2015 не компилятся - куча ошибок.
Iron Bug
пальцем в небо - попробуй поставить опции старых C++ cтандартов, что-нибудь типа С++11 (тут я не знаю, как в компиляторе MS это делается, но должны быть опции).
antoxabond
После долгой экзекуции получилось успешно собрать Aegisub.
Предоствляю инструкцию сделанной после долгой работы методами проб и ошибок.

Пролог.
За основу была взята версия "Aegisub-3.2.2 Build 8635", так как сообщалось что это последняя версия, которая будет работать на Windows XP. В качестве среды разработки была взята Visual Studio 2013.

1. Подготовка
1.1. Так как Visual Studio 2013 работает только на Windows 7 SP1 и выше, нужно учесть эти требования.
Лучше использовать 64 битную версию Windows, так как линкер потребляет много памяти (около 2Гб).
Так же 64 битная версия нужна для отладки (если нужна).
В противом случае во время сборки отладочной версии появлялись ошибки типа:
"c:\aegisub_3.2.2-2013\obj\icu-win32-debug\icudt53l.c(1): fatal error C1060: compiler is out of heap space".
Что являлось следствием ограничения 32 битной системы.
1.2. Надо установить Microsoft DirectX SDK (February 2010) (имя файла было DXSDK_Feb10.exe) с интернета.
1.3. Установить Visual Studio 2013. Лучше "Ultumate" версия чем "Express Desktop". "Express Desktop" версия хуже из-за того. что почему-то не подхватывала автоматичеки пути "Microsoft DirectX SDK (February 2010)" и не было в установке библиотек "atlmfc".
1.4. Добавить пути компилятора и DirectX SDK в системный путь Windows.
Вот эти строчки:
;C:\Program Files\Microsoft Visual Studio 12.0\VC\bin;c:\Program Files\Microsoft SDKs\Windows\v7.1A\Bin
Если этого не сделать, то будут ошибки типи отсутствия cl.exe или rc.exe
Последобавления путей перезагрузиться.
1.5. Найти в интеренете yasm-1.3.0_2015-06-09_32bits.zip и извлечь содержимое в папку "C:\Program Files\Microsoft Visual Studio 12.0\VC\bin\" (можно и в "C:\windows\", но лучше в эту). Переимеовать все файлы "vsyasm.*" в "yasm.*".
Если переменовать только exe файл, то будут ошибки типа
error "yasm: could not open file `Aegisub_3.2.2-2013\vendor\ffmpeg\libavfilter\x86\vf_idet.obj'"
из-зи того, что надо переименовать также и файлы конфигурации *.props, *.targets, *.xml.
1.6. Если используется версия "Visual Studio 2013 Express Desktop", то нужно восполнить отсутствие библиотек "atlmfc":
можно скачать усановочник "Visual Studio 2013 Ultumate"
наити и распаковать (можно использовать "total comander" с плагинами распаковки msi файлов)
d:\packages\vc_libraryextended\vc_libraryextended.msi\SourceDir\Program Files\Microsoft Visual Studio 12.0\VC\atlmfc\
по адресу
c:\Program Files\Microsoft Visual Studio 12.0\VC\atlmfc\

2. Подготовка проекта.
2.1. Установить Git, а затаем TortoiseGit
2.2. переити например в корень диска "c:\" и вызвать контекстное меню.
Выбрать TortoiseGit, затем clone, заполнить данные формы:
поле URL установить "https://github.com/Aegisub/Aegisub.git",
поставить галочку "recursive",
поставить галочку "branch" и ввести рядом в поле версию "v3.2.2",
установить имя, например, "Aegisub_3.2.2-2013".
Поити пить чай и ждать пока процесс закончится.
2.3. Нати в интернете проект fribidi, скачать и распаковать в папку "C:\Aegisub_3.2.2-2013\vendor\"
2.4. Скачать компонент ICU по ссылке "https://github.com/unicode-org/icu/releases/tag/release-53-2" архив "icu4c-53_2-src.zip".
Удалить папку "C:\Aegisub_3.2.2-2013\vendor\icu". Распаковать "icu4c-53_2-src.zip" в "C:\Aegisub_3.2.2-2013\vendor\".
(Выяснилось в процессе компиляции, что ICU компонент в пректе не полный и вызывает множество ошибок компиляции, например:
"not found file "C:\Aegisub_3.2.2-2013\vendor\icu\source\data\in\icudt53l.dat"",
также некоректный файл "icudt53l.dat" вызывает ошибки при загрузке субтитров:
"U_MISSING_RESOURCE_ERROR" и "Failed to create character iterator".)
2.5. Файл "icudt53l.dat" в архиве "icu4c-53_2-src.zip" не меланький ~20Mb и exe-файл будет больше оригинал на ~15Mb.
Если хочется уменьшить его размер то можно поступить так:
(1) установить Aegisub-3.2.2-32 (build 3.2.2.8635);
(2) используя 7-Zip открыть файл aegisub32.exe из установленной папки;
(3) извлечь ".rdata" на диск, открыть его hex-редактором (например HxD):
(3.1) удалить первые 0005FCC0 байт
(3.2) вырезать первые 00425470 байт в новый документ и сохранить как "icudt53l.dat" (получится примерно ~4.4Mb)
(4) заменить оригинальный по адресу "C:\Aegisub_3.2.2-2013\vendor\icu\source\data\in\icudt53l.dat"

3. Исправление ошибок в файлах пректа.
3.1. Удаление упоминания "BuildTasks.dll":
открыть в текстовом редекторе "C:\Aegisub_3.2.2-2013\build\fribidi\fribidi.vcxproj" и удалить строчки:
<UsingTask TaskName="TarballProject" AssemblyFile="$(AegisubBinaryDir)BuildTasks.dll" />
delete record from C:\Aegisub_3.2.2-2013\build\tasks.props ::
<UsingTask TaskName="GitVersion" AssemblyFile="$(AegisubBinaryDir)BuildTasks.dll" />
delete record from C:\Aegisub_3.2.2-2013\build\icu\icu.vcxproj ::
<UsingTask TaskName="DownloadTgzFile" AssemblyFile="$(AegisubBinaryDir)BuildTasks.dll" />
3.2. Удаление упоминания "DownloadTgzFile":
открыть в текстовом редекторе "C:\Aegisub_3.2.2-2013\build\icu\icu.vcxproj" и удалить строчки:
<Target Name="DownloadDataTables" BeforeTargets="PackDataTables" Inputs="$(IcuSrcDir)data\in\$(IcuDt).dat.gz" Outputs="$(IcuSrcDir)data\in\$(IcuDt).dat">
<!-- Generated with tools/strip-icu.py -->
<DownloadTgzFile Url="http://www.aegisub.org/~plorkyeran/$(IcuDt)-be995a7e5fe230029e9b1e547b7de8826888c18c.dat.gz" OutputFile="$(MSBuildThisFileDirectory)..\..\vendor\icu\source\data\in\$(IcuDt).dat" Hash="be995a7e5fe230029e9b1e547b7de8826888c18c" />
</Target>
3.3. Удаление упоминания "TarballProject":
открыть в текстовом редекторе "C:\Aegisub_3.2.2-2013\build\fribidi\fribidi.vcxproj" и удалить строчки:
<!-- Download fribidi -->
<Target Name="Download" BeforeTargets="ClCompile" Inputs="$(FribidiSrcDir)aegisub.hash" Outputs="$(FribidiSrcDir)nonexistent-file">
<TarballProject Url="http://fribidi.org/download/fribidi-0.19.6.tar.bz2" Hash="cba8b7423c817e5adf50d28ec9079d14eafcec9127b9e8c8f1960c5ad585e17d" Root="$(FribidiSrcDir)" />
</Target>
3.3. Удаление упоминания "GitVersion":
открыть в текстовом редекторе "C:\Aegisub_3.2.2-2013\build\Aegisub\Aegisub.vcxproj" и удалить строчки:
<!-- Update git_version.h -->
<Target Name="UpdateVersion" BeforeTargets="ClCompile">
<GitVersion Root="$(AegisubSourceBase)" />
</Target>

4. Настройка проекта.
4.1. запустить через консоль "devenv.exe /useenv" (для "Ultumate" версии)
и ""C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\WDExpress.exe" /useenv" (для "Express Desktop" версии)
4.2. Открыть проект aegusub.sln
4.3. Удалить проекты ".nget", "BuildTasks", "PortableInstaller".
4.4. Прописать lib и inclide пути:
(Как именно:
открыть сойства выбранного проекта и по порядку
окно project properpies-> раздел configuration properties-> подраздел c/c++ -> параметр: additional incide derictories для incude;
окно project properpies-> раздел configuration properties-> подраздел linker -> параметр: additional library derictories для library;
";" разделитель между путями в строке)
(1) для всех приектов кроме [freetype,fontconfig,libass] дописать пути:
include:"$(ProgramFiles)\Microsoft Visual Studio 12.0\VC\include;$(ProgramFiles)\Windows Kits\8.1\Include\um;$(ProgramFiles)\Windows Kits\8.1\Include\shared;"
library:"$(ProgramFiles)\Microsoft Visual Studio 12.0\VC\lib;$(ProgramFiles)\Windows Kits\8.1\Lib\winv6.3\um\x86;"
( Если использовать SDK версии "v7.1A", то проект скомпилится в конце концов,
но будет ошибка инициализации ICU модуля при загрузке субтитров
"U_MISSING_RESOURCE_ERROR" and "Failed to create character iterator" )
(2) для приектов [freetype,fontconfig,libass] дописать пути:
include:"$(ProgramFiles)\Microsoft Visual Studio 12.0\VC\include;$(ProgramFiles)\Microsoft SDKs\Windows\v7.1A\Include;"
library:"$(ProgramFiles)\Microsoft Visual Studio 12.0\VC\lib;$(ProgramFiles)\Microsoft SDKs\Windows\v7.1A\lib;"
(Если использовать SDK версии 28.1", то будет много неразрешимых ошибок компиляции)
(3) для приекта [ffms2] дописать пути:
include:"$(ProgramFiles)\Microsoft Visual Studio 12.0\VC\atlmfc\include;"
library:"$(ProgramFiles)\Microsoft Visual Studio 12.0\VC\atlmfc\lib;"
(исправит ошибку в строке "#include <atlbase.h>")
(4) Если не видит DirectX SDK дописать пути:
include для [ffmpeg] проекта:"$(ProgramFiles)\Microsoft DirectX SDK (February 2010)\Include;"
library для [ffmpeg,aegisub] проектов:"$(ProgramFiles)\Microsoft DirectX SDK (February 2010)\lib\x86;"
4.5. Скопировать файлы:
(1) из папки "c:\Program Files\Windows Kits\8.1\Include\um\"
список
windows.h
winresrc.h
winuser.rh
commctrl.rh
dde.rh
winnt.rh
dlgs.h
winver.h
verrsrc.h
в папку "C:\Aegisub_3.2.2-2013\include\"
(2) из папки "c:\Program Files\Windows Kits\8.1\Include\shared\"
winapifamily.h
sdkddkver.h
SpecStrings.h
sal.h
concurrencysal.h
driverspecs.h
sdv_driverspecs.h
в папку "C:\Aegisub_3.2.2-2013\include\"
(Исправляется ошибки связанные с "#include <windows.h>" в "C:\Aegisub_3.2.2-2013\include\wx\msw\wx.rc" и "C:\Aegisub_3.2.2-2013\libaegisub\windows\fs.cpp".
Почему-то "C:\Aegisub_3.2.2-2013\include\wx\msw\wx.rc" не видит системные Include, даже если жестко прописать
вылетят ошибки)
4.6. Прописать в файле "C:\Aegisub_3.2.2-2013\src\res\res.rc" перед абзатцем где встречается "RESOURCE_BASE_VERSION"
"#define RESOURCE_BASE_VERSION 3,2,2"

Запустить сборку и ждать пока закончится процесс.

Готовые файлы по адресу
https://yadi.sk/d/4zC2m8iB-4bpzw
antoxabond
Как отключить поддержку ffmpeg для того , чтобы не было зависимости от библиотеки ffms2_32.dll.
В программе используются два драйвера рендеринге видео: directshow и ffmpeg(ffms2).
ffms2 работает в разы медленнее, и чтобы отключить его поддержку и удалить саму библиотеку ( с приличным размером в 7Мб),
нужно проделать следующие манипуляции:
1) Выбрать через меню проекта: aegisub -> project properties -> configuration properties -> aegisub -> external libraries
2) Выставить параметр WITH_FFMS2 -> no
3) сохранить и перекомпилировать.
Iron Bug
Цитата(antoxabond @ 2.12.2019, 14:11) *
2.1. Установить Git, а затаем TortoiseGit
2.2. переити например в корень диска "c:\" и вызвать контекстное меню.
Выбрать TortoiseGit, затем clone, заполнить данные формы:
поле URL установить "https://github.com/Aegisub/Aegisub.git",
поставить галочку "recursive",
поставить галочку "branch" и ввести рядом в поле версию "v3.2.2",
установить имя, например, "Aegisub_3.2.2-2013".

вот это всё можно было бы заменить установкой git и командой
git clone --depth=1 --single-branch --branch v3.2.2 Aegisub_3.2.2-2013

оно бы и качалось куда быстрее, не все ветки и без истории, ибо она тебе при сборке не нужна.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.