Dieses Repository versucht, die DOSBox-Codebasis zu modernisieren, indem aktuelle Entwicklungspraktiken und -tools verwendet, Probleme behoben und Funktionen hinzugefügt werden, die heutige Systeme besser unterstützen.
Linux, Windows, macOS
Entwicklung baut.
Besonderheit | Status |
---|---|
Versionskontrolle | Git |
Sprache | C++20 |
SDL | >= 2.0.5 |
Protokollierung | Loguru für C++ 5 |
Buildsystem | Meson oder Visual Studio 2022 |
CI | Ja |
Statische Analyse | Ja 1,3,4 |
Dynamische Analyse | Ja |
Clang-Format | Ja |
Entwicklung baut | Ja |
Unit-Tests | Ja 6 |
Automatisierte Regressionstests | In Bearbeitung |
DOSBox Staging hat die folgenden Bibliotheksabhängigkeiten:
Paket | Lib-Name | Bietet Funktion | Gegenwart | Meson-Wickel | VCPKG | Repo-Verfügbarkeit |
---|---|---|---|---|---|---|
FluidSynth | Flüssigkeitssynth | Allgemeine MIDI-Wiedergabe | Optional | Ja | Ja | gemeinsam |
Google Test+Mock | gmock | Framework für Unit-Tests (Entwicklung) | Optional | Ja | Ja | gemeinsam |
IIR | iir1 | Audiofilterung | Obligatorisch | Ja | Ja | selten |
libpng | libpng | PNG-Kodierung von Screenshots | Optional | Ja | Ja | sehr häufig |
Munt | libmt32emu | Roland MT-32- und CM-32L-Wiedergabe | Optional | Ja | Ja | selten |
Opus-Datei | opusfile | CDDA-Wiedergabe für Opus-kodierte Titeldateien | Obligatorisch | NEIN ? | Ja | gemeinsam |
SDL 2.0 | sdl2 | Betriebssystemunabhängige API für Video, Audio und Eventing | Obligatorisch | Ja | Ja | gemeinsam |
SDL_net 2.0 | sdl2-net | Netzwerk-API für emulierte serielle und IPX | Optional | Ja | Ja | gemeinsam |
schlürfen | libslirp | Unprivilegierter virtueller TCP/IP-Stack für Ethernet | Optional | Ja | Ja | seltener |
SpeexDSP | speexdsp | Audio-Resampling | Obligatorisch | Ja | Ja | gemeinsam |
Tracy Profiler | Tracy | Veranstaltungsprofil (Entwicklung) | Optional | Ja | Ja | selten |
zlib | zlib | ZMBV-Videoaufnahme | Optional | NEIN ? | Ja | sehr häufig |
zlib-ng | zlib-ng | ZMBV-Videoaufnahme (leistungsstärkerer Zlib-Ersatz) | Optional | Ja | Ja | gemeinsam |
Sehen Sie sich die Meson-Wrap-Dateien in den Unterprojekten der aktuellen Bibliotheksversionen an, die wir verwenden.
Klonen Sie das Repository (einmaliger Schritt):
git clone https://github.com/dosbox-staging/dosbox-staging.git
Lesen Sie BUILD.md für die umfassende Kompilierungsanleitung.
Notiz
Die CMake-Unterstützung ist derzeit eine experimentelle, interne Funktion, die noch in Arbeit ist. Es ist noch nicht für den öffentlichen Konsum bereit. Bitte ignorieren Sie die
CMakeLists.txt
Dateien im Quellbaum.
Installieren Sie die für Ihr Betriebssystem geeigneten Build-Abhängigkeiten:
# 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
Schauen Sie sich den Hauptzweig an:
# commit or stash any personal code changes
git checkout main -f
Rufen Sie die neuesten Updates ab. Dies ist jedes Mal erforderlich, wenn Sie einen neuen Build wünschen:
git pull
Richten Sie den Build ein. Dies ist ein einmaliger Schritt, entweder nach dem Klonen des Repos oder dem Bereinigen Ihrer Arbeitsverzeichnisse:
meson setup build
Dadurch werden alle Funktionsmerkmale von DOSBox Staging aktiviert. Wenn Sie alle Setup-Optionen von Meson sehen möchten, führen Sie meson configure
aus.
Stellen Sie die Quellen zusammen. Dies ist jedes Mal erforderlich, wenn Sie einen neuen Build wünschen:
meson compile -C build
Ihre Binärdatei ist: build/dosbox
Die Binärdatei hängt von den zugehörigen lokalen Ressourcen ab. Wir empfehlen daher, von Ihrem PATH
aus einen Symlink zur Binärdatei zu erstellen, z. B. in ~/.local/bin/
.
Viel Spaß!
Zuerst müssen Sie vcpkg einrichten, um Build-Abhängigkeiten zu installieren. Sobald vcpkg gebootet wurde, öffnen Sie PowerShell und führen Sie Folgendes aus:
PS: > .vcpkg integrate install
Durch diesen Schritt wird sichergestellt, dass MSVC vcpkg zum Erstellen, Suchen und Verknüpfen aller Abhängigkeiten verwenden kann.
Starten Sie Visual Studio und öffnen Sie die Datei vsdosbox.sln
. Stellen Sie sicher, dass Sie x64
als Lösungsplattform ausgewählt haben. Verwenden Sie Strg+Umschalt+B, um alle Projekte zu erstellen.
Beachten Sie, dass beim ersten Erstellen einer Konfiguration Abhängigkeiten automatisch erstellt und im Verzeichnis vcpkg_installed
gespeichert werden. Dies kann eine beträchtliche Zeit in Anspruch nehmen.
Anweisungen für andere Build-Systeme und Betriebssysteme sind in BUILD.md dokumentiert.
Links zu betriebssystemspezifischen Anweisungen: MSYS2, MacPorts, Haiku, NixOS.
Upstream-Commits werden zeitnah in dieses Repo importiert, siehe Zweig svn/trunk
.
svn/*
– Zweige von SVNforks/*
– Code für verschiedene verlassene DOSBox-Forksvogons/*
– Community-Patches, die im Vogons-Forum veröffentlicht wurden Git-Tags, die dem Muster svn/*
entsprechen, verweisen auf die Commits, auf die zum Zeitpunkt der Erstellung von SVN-„Tag“-Pfaden verwiesen wird.
Zusätzlich fügen wir den Commits einige optionale Metadaten in Form von Git-Notizen hinzu. Um sie abzurufen, führen Sie Folgendes aus:
git fetch origin " refs/notes/*:refs/notes/* "
Bitte lesen Sie den Dokumentationsleitfaden, bevor Sie Änderungen an der Website oder der Dokumentation vornehmen.