更新履歴
double height対応の項目は不要になったので削除しました 2019/07/28
ビルド方法を整理しました 2019/07/28
svnサーバー変更 2016/11/20
OpenTTDについて追記 2016/03/26
120.0向けにビルド方法を変更 2014/06/19
svnサーバー変更 2014/04/24
サーバー用の設定を追加 2011/08/20

[編集]ソースコードのビルド方法

詳しい方がおられましたら、どんどん補足、修正をお願いします。
WSLでのコンパイル方法わかる方いらっしゃいましたら追記をお願いします.

[編集]ソースコードを入手する

リリース版のソースはSourceForgeにある。
開発中のソースは個人のSVNサーバーで管理されているので、そこから入手可能。

svnサーバーsvn://servers.simutrans.org/simutrans
ユーザー名anon
パスワード(空白)

開発トランクはGitHubでもミラーされている。http://github.com/aburch/simutransからも入手可能。

[編集]MSYS2でのGDI版のビルド方法(Windows)

  1. MSYS2を https://www.msys2.org/ からインストール。
  2. MSYS2のパッケージを更新する.32bit版のMSYS2で以下のコードを実行すればよい.
    yes | pacman -Syu
    最後に以下のようなメッセージが表示されるので,MSYS2の画面の閉じるボタンを押して一度MSYS2を終了し,もう一度MSYS2の32bit版を起動する.
    警告: terminate MSYS2 without returning to shell and check for updates again
    警告: for example close your terminal window instead of calling exit
  3. MSYS2内で,以下のコードを実行.ライブラリのインストールを行う.
    pacman -S git make mingw-w64-i686-toolchain mingw-w64-i686-zlib mingw-w64-i686-bzip2 mingw-w64-i686-libpng
  4. config.templateをコピーし,「config.default」に名前を変更する.
  5. config.defaultを適当なテキストエディタで開く(改行がLFなのでメモ帳は不可)。
  6. 以下の行の先頭の#を削除。
    BACKEND = gdi
    COLOUR_DEPTH = 16
    OSTYPE = mingw
    OPTIMISE = 1
    STATIC = 1
    MULTI_THREAD = 1
  7. ソースのあるディレクトリに移動する。c:\src\simutrans-src-102-2-2にソースがある場合は cd /c/src/simutrans-src-102-2-2 と入力してEnter。
  8. make -j4 と入力してEnter。「4」はお使いのPCの論理コア数に置き換える.(並列コンパイル数の設定)
  9. うまくいけばsim.exeができる。

[編集]コマンドプロンプトを開く/開かない

config.defaultの

WIN32_CONSOLE = 1

が,コマンドプロンプトを開くかどうかのフラグです.1にすればSimutransはコマンドプロンプトを開いて起動します.

[編集]SDL版のビルド

[編集]サーバー専用にする

config.defaultで、「BACKEND = posix」、「COLOUR_DEPTH = 0」に設定します。
起動時には、pakセット、言語などをコマンドラインから指定する必要があります。
(例)「-objects pak -lang ja」

[編集]nettoolのビルド

Makefileで「 -lwsock32」が不足しているようです。STD_LIBSに追加したら成功しました。

[編集]makeobjのビルド

  • makeobjディレクトリに移動し,makeすればよい.

開発トランクのmakeobjソースコードは仕様が確定していないため、これで作成したpakは将来使用できなくなる可能性があります

[編集]MSVC++ Express/Community Editionでのビルド方法(Windows)

わかる方,更新お願いします.

  1. まずソースコードを入手しますが、SourceForgeからダウンロードした安定板のソースコードだとVC++用プロジェクトファイルが付いてこないので、SVNかGitHubからダウンロードします。
    リビジョンが合っていればsourceforgeからダウンロードしたものにsvnやgitからダウンロードしたプロジェクトファイルを組み合わせても大丈夫です。必要なファイルはSimutrans.sln,Simutrans.vcxproj,rivision.jse,simres.rcです。
  2. libbz2.libとbzlib.hを用意します。
    • (MSVC++2013まで)英語フォーラム:16608からlibbz2.libとbzlib.h(bzlib.msvc.7zというファイルに圧縮されています)がダウンロードできるので、適当なフォルダに保存します。
    • (MSVC++2015以降)bzip2のWebサイトからbzip2のソースコードをダウンロード・展開します。ダウンロードしたbzip2のソースをMSVC++でビルドすることにより、libbz2.libが生成されます。bzlib.hは、bzip2のソースに添付されているものを使用します。
      • 上述英語フォーラム:16608からダウンロードできるlibbz2.libだと、Simutransのビルドの時点で「外部シンボル "__imp____iob_func" は未解決です。」というエラーが発生し、ビルドが失敗します。VC++2015以降でstdin、stdout、stderrの定義が変わっているのが原因と思われます。
  3. OpenTTD用のライブラリをダウンロードします。ダウンロードするファイルは、最新バージョンのディレクトリを選び、その中の末尾が"-win.zip"のファイルです。sourceやsumではありません。こちらも適当な場所に展開します。
  4. pthreadsのライブラリをftpからダウンロードします。dll-latestの下のinclude,lib,dll内のファイルをすべて保存します。
  5. ソースフォルダ内のソリューションファイル(Simutrans.sln)かプロジェクトファイル(Simutrans.vcxproj)を開きます。
  6. ソリューションエクスプローラからプロジェクトのプロパティを開き、構成プロパティのVC++ディレクトリを選択します。
  7. インクルードディレクトリに保存しておいたhファイルの入ったディレクトリを追加します。OpenTTD用ライブラリの物は"展開したフォルダ\shared\include"にあります。
  8. ライブラリディレクトリに保存しておいたlibファイル,aファイル,dllファイルの入ったディレクトリを指定します。OpenTTD用ライブラリの物は"展開したフォルダ\win32\library"にあります。
  9. 構成プロパティのC/C++→プリプロセッサを選択し、プリプロセッサの定義にZLIB_WINAPIを追記します。
  10. (120.1.1以降)プロジェクトのプロパティを開き、リンカー→入力の中の追加の依存ファイルを選択しimm32.libを追記します。
  11. (120.1.1以降)マニフェストツール→入出力で埋め込みマニフェストをいいえにします。
  12. プロジェクトをビルドします。上手くいけばソースフォルダ内のDebugフォルダにSimutrans.exeが出来ています。
    Debug版だとデバッグ用の表示が追加されているので、Release版に変更してビルドすると無くなります。Debug版とは別にもう一度構成プロパティの変更が必要なので注意。
  • revision.hが存在しないと言われてビルドが失敗する場合があります。これは本家のSVNを用いてソースコードをダウンロードしなかった場合(SourceforgeやTurtoiseSVN)に起こるエラーです。revision.hを自分で作るか、プリプロセッサでリビジョンを定義してやる必要があります。

    プリプロセッサに定義する場合は、プロジェクトの構成プロパティでC/C++→プリプロセッサを開きます。プリプロセッサの定義の末尾に、「REVISION=(リビジョン番号)」を付けたして下さい。

    revision.hを自作する場合は、次のように書いてrevision.hとして保存してください。もちろん保存後はプロジェクトにヘッダファイルとして追加する必要があります。

    #ifndef _revision_h
    #define _revision_h
    
    #define REVISION (リビジョン番号)
    
    #endif

なお、MSVC++を用いてビルドした場合、動作にpthreadのVisual C++用の動的リンクライブラリ(dll)が必要になります。本体を動作させるフォルダに、Simutransのデフォルトで付いてくるpthreadGC2.dllの代わりに、準備でダウンロードしたpthreadVC2.dllを置いてやります。

参考リンク:

[編集]macOSでのビルド方法(SDL2版)

  1. homebrew( https://brew.sh/index_ja )をインストールする.
  2. ターミナルで以下のコマンドを実行する.(ライブラリのインストール)
    brew install sdl2 libpng miniupnpc freetype
  3. config.templateをコピーし,「config.default」に名前を変更する.
  4. config.defaultを適当なテキストエディタで開く。
  5. 以下の行の先頭の#を削除。
    BACKEND = sdl2
    COLOUR_DEPTH = 16
    OSTYPE = mac
    OPTIMISE = 1
    AV_FOUNDATION = 1
    MULTI_THREAD = 1
  6. ターミナルで,ソースコードがあるディレクトリに移動する.例えば,ダウンロード/simutran-src-120-4にソースコードがあるなら,cd ~/Downloads/simutrans-src-120-4 と入力する.(~/ はユーザーのホームディレクトリの意味)
  7. make -j4 と入力してEnter。「4」はお使いのPCの論理コア数に置き換える.(並列コンパイル数の設定)
  8. うまくいけば実行ファイル「sim」ができる。

[編集]Linuxでのビルド方法(SDL2版)

※Ubuntuでのビルドを想定しています.

  1. 以下のコマンドを実行する.(ライブラリのインストール)
    sudo apt install make gcc gdb git zlib1g-dev libbz2-dev libpng-dev libsdl2-dev libminiupnpc-dev libfreetype6
  2. config.templateをコピーし,「config.default」に名前を変更する.
  3. config.defaultを適当なテキストエディタで開く。
  4. 以下の行の先頭の#を削除。
    BACKEND = sdl2
    COLOUR_DEPTH = 16
    OSTYPE = linux
    OPTIMISE = 1
    MULTI_THREAD = 1
  5. ターミナルで,ソースコードがあるディレクトリに移動する.(cdコマンドを用いる)
  6. make -j4 と入力してEnter。「4」はお使いのPCの論理コア数に置き換える.(並列コンパイル数の設定)
  7. うまくいけば実行ファイル「sim」ができる。

[編集]パッチの当て方

simutrans本体の改変版は、実行ファイル形式で配布することも多いですが、ソースコードの差分を記述したパッチという形式で配布される場合が多々あります(拡張子は.patchか.diff)。小規模な変更の場合はパッチファイルのみ配布されることが多いです。
パッチファイルはあくまでもソースコードの差分を記述したファイルなので、ソースコードにパッチを当ててからビルドし実行ファイルを作ることでパッチの機能が付与されたsimutrans本体が出来上がります。

パッチファイルを当てる方法は大きく分けて2種類あり、1つはコマンドライン上からpatchというコマンドを実行する方法です。
Windowsのコマンドプロンプトにはpatchコマンドが付いてこないので、MinGWやCygwinを用いるかWindows移植版のpatch.exeをダウンロードしpathを通します。
基本的にはsimutransのソースコードが入っているディレクトリで「patch -p0 <パッチファイル名」と行えば大丈夫です。詳しい使い方はMANを参照

もう1つはGUIの付いたアプリケーションを使って当てる方法です。筆者はTurtoiseSVNというアプリケーションを用いています。(SVNからソースコードを入手したりするのにも便利)
インストール方法は省略。simutransのソースコードの入ったフォルダを右クリックし、「パッチを適用」を選択しパッチファイルを開くとパッチ処理が行われます。


 
Last-modified: 2020-12-06 (日) 08:00:43