このリポジトリは、現在の開発手法とツールを使用し、問題を修正し、今日のシステムをより適切にサポートする機能を追加することにより、DOSBox コードベースを最新化することを試みます。
Linux、Windows、macOS
開発ビルド。
特徴 | 状態 |
---|---|
バージョン管理 | Git |
言語 | C++20 |
SDL | >= 2.0.5 |
ロギング | C++ 5用ログル |
ビルドシステム | Meson または Visual Studio 2022 |
CI | はい |
静的解析 | はい1、3、4 |
動的解析 | はい |
クラン形式 | はい |
開発ビルド | はい |
単体テスト | はい6 |
自動回帰テスト | WIP |
DOSBox Staging には次のライブラリの依存関係があります。
パッケージ | ライブラリ名 | 機能を提供します | 面前 | 中間子ラップ | VCPKG | リポジトリの可用性 |
---|---|---|---|---|---|---|
流体シンセ | 流体合成 | 一般的なMIDI再生 | オプション | はい | はい | 一般 |
Googleテスト+モック | グモック | 単体テストのフレームワーク(開発) | オプション | はい | はい | 一般 |
IIR | iir1 | オーディオフィルタリング | 必須 | はい | はい | レア |
libpng | libpng | 画面キャプチャの PNG エンコード | オプション | はい | はい | 非常に一般的な |
ムント | libmt32emu | Roland MT-32、CM-32Lの再生 | オプション | はい | はい | レア |
オーパスファイル | オーパスファイル | Opus でエンコードされたトラック ファイルの CDDA 再生 | 必須 | いいえ? | はい | 一般 |
SDL2.0 | sdl2 | ビデオ、オーディオ、イベント用の OS に依存しない API | 必須 | はい | はい | 一般 |
SDL_net 2.0 | sdl2ネット | エミュレートされたシリアルおよび IPX 用のネットワーク API | オプション | はい | はい | 一般 |
ズルズル | リブスリプ | イーサネット用の非特権仮想 TCP/IP スタック | オプション | はい | はい | あまり一般的ではない |
SpeexDSP | 速度dsp | オーディオのリサンプリング | 必須 | はい | はい | 一般 |
トレイシー・プロファイラー | トレーシー | イベントプロフィール(開発中) | オプション | はい | はい | レア |
ズリブ | ズリブ | ZMBVビデオキャプチャ | オプション | いいえ? | はい | 非常に一般的な |
zlib-ng | zlib-ng | ZMBV ビデオ キャプチャ (よりパフォーマンスの高い zlib の置き換え) | オプション | はい | はい | 一般 |
現在使用しているライブラリ バージョンのサブプロジェクト内の Meson ラップ ファイルを参照してください。
リポジトリのクローンを作成します (1 回限りのステップ)。
git clone https://github.com/dosbox-staging/dosbox-staging.git
包括的なコンパイル ガイドについては、BUILD.md をお読みください。
注記
CMake サポートは現在、内部専用の実験的な進行中の機能です。まだ一般消費の準備ができていません。ソース ツリー内の
CMakeLists.txt
ファイルは無視してください。
OS に適したビルド依存関係をインストールします。
# Fedora
sudo dnf install ccache gcc-c++ meson alsa-lib-devel libatomic libpng-devel
SDL2-devel SDL2_net-devel opusfile-devel
fluidsynth-devel iir1-devel mt32emu-devel libslirp-devel
speexdsp-devel libXi-devel zlib-ng-devel
# Debian, Ubuntu
sudo apt install ccache build-essential libasound2-dev libatomic1 libpng-dev
libsdl2-dev libsdl2-net-dev libopusfile-dev
libfluidsynth-dev libslirp-dev libspeexdsp-dev libxi-dev
# Install Meson on Debian-11 "Bullseye" or Ubuntu-21.04 and newer
sudo apt install meson
# Arch, Manjaro
sudo pacman -S ccache gcc meson alsa-lib libpng sdl2 sdl2_net
opusfile fluidsynth libslirp speexdsp libxi pkgconf
# openSUSE
sudo zypper install ccache gcc gcc-c++ meson alsa-devel libatomic1 libpng-devel
libSDL2-devel libSDL2_net-devel
opusfile-devel fluidsynth-devel libmt32emu-devel libslirp-devel
speexdsp libXi-devel
# Void Linux
sudo xbps-install -S SDL2-devel SDL2_net-devel alsa-lib-devel
fluidsynth-devel libiir1-devel libmt32emu-devel
libpng-devel libslirp-devel opusfile-devel
speexdsp-devel libatomic-devel libXi-devel
# NixOS
# With Home Manager on home.nix (Recommended Permanent Installation)
home.packages = [ pkg-config gcc_multi cmake ccache SDL2 SDL2_net
fluidsynth glib gtest libGL libGLU libjack2 libmt32emu libogg
libpng libpulseaudio libslirp libsndfile meson ninja opusfile
libselinux speexdsp stdenv alsa-lib xorg.libXi irr1 ]
# Note: the same package list will work with environment.systemPackages
# on configuration.nix
# macOS
xcode-select --install
brew install cmake ccache meson libpng sdl2 sdl2_net opusfile
fluid-synth libslirp pkg-config python3 speexdsp
メインブランチをチェックしてください。
# commit or stash any personal code changes
git checkout main -f
最新のアップデートを取得します。これは、新しいビルドが必要になるたびに必要になります。
git pull
ビルドをセットアップします。これは、リポジトリのクローン作成後、または作業ディレクトリのクリーンアップ後に 1 回限りの手順です。
meson setup build
上記により、DOSBox Staging のすべての機能が有効になります。 Meson のセットアップ オプションをすべて確認したい場合は、 meson configure
実行してください。
ソースをコンパイルします。これは、新しいビルドが必要になるたびに必要になります。
meson compile -C build
あなたのバイナリは次のとおりです: build/dosbox
バイナリはそれに関連するローカル リソースに依存するため、 ~/.local/bin/
などのPATH
からバイナリにシンボリックリンクすることをお勧めします。
楽しむ!
まず、vcpkg をセットアップしてビルドの依存関係をインストールする必要があります。 vcpkg がブートストラップされたら、PowerShell を開いて次を実行します。
PS: > .vcpkg integrate install
この手順により、MSVC が vcpkg を使用してすべての依存関係を構築、検索、リンクできるようになります。
Visual Studio を起動し、ファイルvsdosbox.sln
を開きます。ソリューション プラットフォームとしてx64
選択されていることを確認してください。 Ctrl+Shift+B を使用してすべてのプロジェクトをビルドします。
初めて構成を構築するときは、依存関係が自動的に構築され、 vcpkg_installed
ディレクトリに保存されることに注意してください。これにはかなりの時間がかかる場合があります。
他のビルド システムおよびオペレーティング システムの手順は、BUILD.md に文書化されています。
OS 固有の手順へのリンク: MSYS2、MacPorts、Haiku、NixOS。
上流のコミットは適時にこのリポジトリにインポートされます。ブランチsvn/trunk
参照してください。
svn/*
- SVN からの分岐forks/*
- 放棄されたさまざまな DOSBox フォークのコードvogons/*
- Vogons フォーラムに投稿されたコミュニティ パッチパターンsvn/*
に一致する Git タグは、作成時に SVN の「タグ」パスによって参照されるコミットを指します。
さらに、いくつかのオプションのメタデータを Git ノートの形式でコミットに添付します。それらを取得するには、次を実行します。
git fetch origin " refs/notes/*:refs/notes/* "
Web サイトまたはドキュメントに変更を加える前に、ドキュメント ガイドを参照してください。