tdesktop/build-msvc2013.txt

142 lines
5.8 KiB
Plaintext

Build with Visual Studio 2013, Windows 8.1
Prepare folder:
Choose folder for future build, for example "D:\TBuild\".
There you will have two folders, "Libraries" for third-party libs and "tdesktop" for the app.
Clone sources:
- By git: in Git Bash go to "/d/tbuild" and run "git clone https://github.com/telegramdesktop/tdesktop.git"
- Or download in ZIP and extract to "D:\TBuild\", rename "tdesktop-master" to "tdesktop" to have "D:\TBuild\tdesktop\Telegram.sln" solution
Prepare libraries:
OpenSSL (1.0.1g)
https://www.openssl.org/related/binaries.html > "OpenSSL for Windows" > "Win32 OpenSSL v1.0.1g" (16 Mb)
- Install to "D:\TBuild\Libraries\OpenSSL-Win32", while installing "Copy OpenSSL DLLs to" choose "The OpenSSL binaries (/bin) directory"
LZMA (9.20)
http://www.7-zip.org/sdk.html > Download 9.20 "LZMA SDK (C, C++, C#, Java)"
- Extract to "D:\TBuild\Libraries\lzma\"
Building Lib:
- Open "D:\TBuild\Libraries\lzma\C\Util\LzmaLib\LzmaLib.dsw" with Visual Studio 2013 > One-way upgrade OK
- For Debug and Release configurations:
- LzmaLib Properties > General > Configuration Type = "Static library (.lib)" > OK
- LzmaLib Properties > Librarian > General > Target Machine = "MachineX86 (/MACHINE:X86)" > OK
- Build Debug
- Build Release
zlib (1.2.8)
http://www.zlib.net/ > "zlib source code, version 1.2.8, zipfile format" > http://zlib.net/zlib128.zip
- Extract to "D:\TBuild\Libraries\"
Building Lib:
- Open "D:\TBuild\Libraries\zlib-1.2.8\contrib\vstudio\vc11\zlibvc.sln" > Upgrade .. > OK
- We are interested in only "zlibstat" project, but it depends on some custom pre-build step
- For Debug configuration:
- zlibstat Properties > C/C++ > Code Generation > Runtime Library = "Multi-threaded Debug (/MTd)" > OK
- For Release configuration:
- zlibstat Properties > C/C++ > Code Generation > Runtime Library = "Multi-threaded (/MT)" > OK
- Build Solution for Debug - only "zlibstat" project build successfully, and we need only it
- Build Solution for Release - only "zlibstat" project build successfully, and we need only it
libexif (0.6.20) - prepared
https://github.com/telegramdesktop/libexif-0.6.20
- By git: in Git Bash go to "/d/tbuild/libraries" and run "git clone https://github.com/telegramdesktop/libexif-0.6.20.git"
- Or download in ZIP and extract to "D:\TBuild\Libraries\", rename "libexif-0.6.20-master" to "libexif-0.6.20" to have "D:\TBuild\Libraries\libexif-0.6.20\win32\lib_exif.sln" solution
Building Lib:
- Open "D:\TBuild\Libraries\libexif-0.6.20\win32\lib_exif.sln"
- Build Debug
- Build Release
Qt (5.3.0)
http://download.qt-project.org/official_releases/qt/5.3/5.3.0/single/qt-everywhere-opensource-src-5.3.0.zip
- Extract to "D:\TBuild\Libraries\Tmp\"
- Copy everything from "D:\TBuild\Libraries\Tmp\qt-everywhere-opensource-src-5.3.0" to "D:\TBuild\Libraries\QtStatic"
- Copy (with overwrite) everything from "D:\TBuild\tdesktop\_qt_5_3_0_patch" to "D:\TBuild\Libraries\QtStatic"
Building Lib:
- Install Python (3.3.2) from https://www.python.org/download/releases/3.3.2 > "Windows x86 MSI Installer (3.3.2)" (https://www.python.org/ftp/python/3.3.2/python-3.3.2.msi)
- Open "VS2013 x86 Native Tools Command Prompt.bat" (should be in "\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts")
Go to Qt directory ("D:" > Enter > "cd TBuild\Libraries\QtStatic" > Enter) and run "configure -debug-and-release -opensource -static -opengl desktop -mp -nomake examples -platform win32-msvc2013", then "y" (accept), after configuration is complete run "nmake" and then "nmake install", nmake will take really long time.
Qt Visual Studio Addin 1.2.3
http://download.qt-project.org/official_releases/vsaddin/qt-vs-addin-1.2.3-opensource.exe
- Install to default location
Building Telegram Desktop:
- Launch Microsoft Visual Studio 2013
- QT5 > Qt Options > Add:
Version name: QtStatic.5.3.0
Path: D:\TBuild\Libraries\QtStatic\qtbase
- Default Qt/Win version: QtStatic.5.3.0 > OK
- File > Open > Project/Solution > D:\TBuild\tdesktop\Telegram.sln
- Build > Build Solution
Projects in Telegram solution:
Telegram:
tdesktop messenger
Updater:
little app, that is launched by Telegram when update is ready, replaces all files and launches it back
Packer:
compiles given files to single update file, compresses it with lzma and signs with a private key,
it was not included to Telegram solution, because private key is inaccessible
Prepare:
prepares a release for deployment: puts all files to deploy/{version} folder
current tsetup{version}exe installer
current Telegram.exe
current Telegram.pdb (debug info for crash minidumps view)
current tupdate{updversion} binary lzma update archive
MetaEmoji:
from two folders
SourceFiles/art/Emoji
SourceFiles/art/Emoji_200x
and some inner config creates four sprites and text2emoji replace code:
SourceFiles/art/emoji.png
SourceFiles/art/emoji_125x.png
SourceFiles/art/emoji_150x.png
SourceFiles/art/emoji_200x.png
SourceFiles/gui/emoji_config.cpp
MetaStyle:
from two files and two sprites
Resources/style_classes.txt
Resources/style.txt
SourceFiles/art/sprite.png
SourceFiles/art/sprite_200x.png
creates two other sprites, four sprite grids and style constants code:
SourceFiles/art/sprite_125x.png
SourceFiles/art/sprite_150x.png
SourceFiles/art/grid.png
SourceFiles/art/grid_125x.png
Sourcefiles/art/grid_150x.png
SourceFiles/art/grid_200x.png
GeneratedFiles/style_classes.h
GeneratedFiles/style_auto.h
GeneratedFiles/style_auto.cpp
MetaLang:
from langpack file
Resources/lang.txt
creates lang constants code and lang file parse code:
GeneratedFiles/lang.h
GeneratedFiles/lang.cpp