Wstęp
Ta strona zawiera instrukcje potrzebne do kompilacji Openttd w wersji 32 bitowej z użyciem MinGW.
Lista paczek
Ten tutorial został przetestowany z użyciem następujących paczek:
- OpenTTD wersja 1.2.x lub trunk.
- mingw-get-inst-20120426
- Subversion 1.7.6
- zlib-1.2.11
- libpng-1.5.13
- lzo-2.06
- freetype-2.4.10
- gettext-runtime_0.18.1.1-2
- glib_2.26.0-2
- pkg-config_0.23-3
- xz-5.0.4
- libicu-4.6
Instalacja MinGW i MSYS
- Ściągnij i zainstaluj mingw-get-inst (Link do downloadu można znaleźć w poprzedniej sekcji).
- Wybierz "Use pre-packaged repository catalogues".
- Przejrzyj warunki licencyjne i je zaakceptuj.
- Miej na uwadzę fakt, iż MinGW musi zostać zainstalowany w miejscu do którego ścieżka nie zawiera żadnych spacji. Ta metoda została przetestowana ze ścieżką instalacyjna C:\MinGW.
- Wybierz "C++ Compiler" (Kompilator C++) i "MSYS Basic System" (Podstawowy system MSYS) jako składniki do instalacji.
- Czekaj aż wszystkie paczki zostaną ściągnięte i instalacja się zakończy
Konfiguracja MSYS
Wejdź do folderu MSYS (Można go znaleźć pod <folder instalacji MinGW>\msys\1.0, C:\MinGW\msys\1.0 przy domyślnej ścieżce), otwórz etc\fstab za pomocą edytora tekstu (n.p. notatnik) i dodaj następującą linię na końcu pliku:C:\MinGW\ /usr/local
Na Windows Vista i nowszych wersjach systemu będziesz potrzebować dodatkowych kroków aby MSYS w pełni działał, jeśli UAC jest włączony (Przy domyślnych ustawieniach zawsze jest włączony). Idż do folderu MSYS (C\MinGW\Msys\1.0), otwórz msys.bat za pomocą edytora tekstu i dodaj następująca linijkę po @echo off
:
cd "C:\MinGW\msys\1.0"
Jeśli zainstalowałeś MSYS na innym dysku niż systemowy (domyślnie dysk C:) to dodaj jeszcze jedną linie:
C:
Po zapisaniu pliku kliknij prawym przyciskiem myszy na msys.bat i wybierz opcję "Uruchom jako administrator". Będziesz musiał to robić za każdym razem uruchamiając MSYS. Dzięki temu programy wymagające uprawnień administratorskich (takie jak install
lub patch
) będą działać poprawnie.
Sprawdzenie poprawności instalacji MSYS/MinGW
- Otwórz msys.bat (MinGW Shell) jako administrator.
- Uruchom następujące komendy:
make -v gcc -v
- Komendy powinny wypisać aktualną wersję programów make i gcc. Sprawdź czy nie występują jakiekolwiek błędy.
Jeśli dostaniesz błąd
gcc: command not found
Wejdź do folderu z instalacją MinGW a następnie do msys\1.0\postinstall i uruchom pi.bat.
Kompilacja i instalacja wymaganych paczek
W celu znalezienia dodatkowych informacji o bibliotekach sprawdź część 7.1) pliku Readme OpenTTD. Aby skompilować i zainstalować paczki najpierw musimy zainstalować następujące komendy: (Aby proces kompilacji działał poprawnie na Windowsie 7 należy upewnić się, iż włączony jest serwis "application experience" )
Możesz skopiować poniższe komendy do MinGW używać CTRL+INS zamiast CTRL+V.
Uruchom wewnątrz MSYS:
mingw-get install msys-wget mingw-get install msys-unzip mingw-get install msys-patch
Jeśli wyświetli się błąd:
configure: error: cannot run C compiled programs.
, Jedną z przyczyn może być twój antywirus, który potajemnie usuwa plik wykonywalny a.exe. Spróbuj tymczasowo wyłączyć program antywirusowy i spróbuj ponownie.
Instalacja Subversion
Uruchom w MSYS:
wget http://sourceforge.net/projects/win32svn/files/1.7.6/apache22/svn-win32-1.7.6.zip/download --no-check-certificate unzip svn-win32-1.7.6.zip cd svn-win32-1.7.6 mv bin/* /usr/local/bin/ cd ..
Kompilacja zlib
Uruchom w MSYS:
wget http://zlib.net/zlib-1.2.11.tar.gz tar xvfz zlib-1.2.11.tar.gz cd zlib-1.2.11 make -f win32/Makefile.gcc BINARY_PATH=/bin INCLUDE_PATH=/usr/local/include LIBRARY_PATH=/usr/local/lib install cd ..
Jeśli nie jesteś w stanie skompilować tej paczki z użyczkiem MSYS i komend powyżej możesz spróbować ją zainstalować za pomocą "MinGW Installation Manager". Wewnątrz menadżera instalacyjnego paczka ta nazwana jest mingw32-libz. Jeśli program nie jest w stanie jej znaleźć na serwerze to twórcy najprawdopodbniej postanowili ją przenieść do innej rewizji. Udaj się do http://zlib.net, aby zobaczyć wersję nowej rewizji. Następnie zamień występujące powyżej wersje 1.2.11 na tą którą znalazłeś na stronie (1.2.[rr]).
Kompilacja libpng
Uruchom w MSYS:
wget http://sourceforge.net/projects/libpng/files/libpng15/older-releases/1.5.16/libpng-1.5.16.tar.xz/download --no-check-certificate tar xvfJ libpng-1.5.16.tar.xz cd libpng-1.5.16 mv INSTALL INSTALL.txt ./configure make install cd ..
Kompilacja liblzo2
Uruchom w MSYS:
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz tar xvfz lzo-2.06.tar.gz cd lzo-2.06 ./configure --enable-static make install cd ..
Kompilacja libfreetype
Uruchom w MSYS:
wget http://sourceforge.net/projects/freetype/files/freetype2/2.4.10/freetype-2.4.10.tar.gz --no-check-certificate tar zxvf freetype-2.4.10.tar.gz cd freetype-2.4.10 ./configure --enable-static make install cd ..
Kompilacja xz
Liblzma, która jest częścią xz, jest wymagana do kompilacji OpenTTD od rewizji r21044. Dodatkowo potrzebuje pkg-config i jego zależności.
Uruchom w MSYS:
wget http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime_0.18.1.1-2_win32.zip unzip gettext-runtime_0.18.1.1-2_win32.zip -d /usr/local wget http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.26/glib_2.26.0-2_win32.zip unzip glib_2.26.0-2_win32.zip -d /usr/local wget http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip unzip pkg-config_0.23-3_win32.zip -d /usr/local wget http://tukaani.org/xz/xz-5.0.4.tar.gz --no-check-certificate tar xvfz xz-5.0.4.tar.gz cd xz-5.0.4 ./configure --enable-static --disable-threads make install cd ..
Kompilacja libicu
libicu jest opcjonalną biblioteką, która obsługuję zapis pisowni od prawej do lewej (n.p. język Arabski i Perski) i sortowanie naturalne list. Proces kompilacji może zająć bardzo długo, więc możesz bezpiecznie pominąć tą paczkę, jeśli jej nie potrzebujesz.
Instalcja drugiego patcha jest krokiem opcjonalnym. Zmniejszy ona rozmiar skompilowanego OpenTTD kosztem braku sortowania danych dla większości języków.
Kompilacja z użyciem libicu znacząco wpłynie na wielkość pliku wykonywalnego OpenTTD.
Rozmiar openttd.exe z libicu:ok. 25 MB
Rozmiar openttd.exe z libicu (zredukowany o rozmiar icudata):ok. 10MB
Rozmiar openttd.exe bez libicu:ok. 8MB
Uruchom w MSYS:
wget http://download.icu-project.org/files/icu4c/4.8/icu4c-4_8-src.zip unzip icu4c-4_8-src.zip cd icu wget http://devs.openttd.org/~terkhen/libicu/libicu_4_8_mingw32.diff patch -p1 -i libicu_4_8_mingw32.diff wget http://devs.openttd.org/~terkhen/libicu/libicu_reduce_icudata_size.diff patch -p1 -i libicu_reduce_icudata_size.diff cd source ./configure --enable-static --disable-shared --disable-strict --disable-threads make install cd ../..
Pobieranie kodu źródłowego
Otwórz MSYS i uruchom
cd && svn checkout svn://svn.openttd.org/trunk
Kod źródłowych OpenTTD znajduje się teraz wewnątrz folderu trunk
, który jest w twoim folderze domowym MSYS (<Miejsce instalacji MinGW>\MSYS\1.0\home\<Twoja nazwa użytkownika>).
Kompilacja OpenTTD
- Uruchom MSYS.
- Uruchom:
cd ~/<path_to_source> ./configure make
(~ oznacza twój folder domowy MSYS) - Proces kompilacji jest skończony, gdy powstanie plik openttd.exe. Zostanie on skopiowany do folderu
./bin
- Aby przetestować swoją kompilacje możesz uruchomić (z tego samego folderu w którym kompilowałeś OpenTTD):
./bin/openttd
Nie zapomnij zainstalować base graphics set przed tym krokiem, jeśli jeszcze nie masz paczek z grafikami. (Najprostszym sposobem jest manualna instalacja OpenGFX) - Jeśli masz zamiar wygenerować zestaw instalacyjny możesz użyć:
make bundle
Jak ta komenda zostanie zakończona zastaniesz pełną wersję OpenTTD gotową do instalacji na innych komputerach w folderze ~/<paczka do źródeł Openttd>/bundle.
Patchowanie kodu źródłowego
Umieść plik z patchem, który chcesz zaaplikować, w folderze w którym zlokalizowane są źródła Openttd ( <Folder instalacyjny MinGW>\MSYS\1.0\home\<twoja nazwa użytkownika>\trunk ) Następnie wewnątrz MSYS uruchom:
cd ~/trunk patch -p1/p0 < <patch name>
Użyj p0 dla patchy w stylu subversion, p1 dla wszystkich pozostałych (Prawdopodobnie dobrym pomysłem jest użycie p1 na samym początku). Wyjaśnienie różnicy między p1/p0:
- FAQ development (en)#how-to-apply-a-patch