Ce référentiel tente de moderniser la base de code DOSBox en utilisant les pratiques et outils de développement actuels, en corrigeant les problèmes et en ajoutant des fonctionnalités qui prennent mieux en charge les systèmes actuels.
Linux, Windows, macOS
Constructions de développement.
Fonctionnalité | Statut |
---|---|
Contrôle des versions | Git |
Langue | C++20 |
SDL | >= 2.0.5 |
Enregistrement | Loguru pour C++ 5 |
Système de construction | Meson ou Visual Studio 2022 |
CI | Oui |
Analyse statique | Oui 1,3,4 |
Analyse dynamique | Oui |
format clang | Oui |
Constructions de développement | Oui |
Tests unitaires | Oui 6 |
Tests de régression automatisés | En-cours |
DOSBox Staging a les dépendances de bibliothèque suivantes :
Emballer | Nom de la bibliothèque | Fournit une fonctionnalité | Présence | Enveloppement au méson | VCPKG | Disponibilité des pensions |
---|---|---|---|---|---|---|
Synthé Fluide | synthèse fluide | Lecture MIDI générale | Facultatif | Oui | Oui | commun |
Google Test+Mock | gmock | Framework pour les tests unitaires (développement) | Facultatif | Oui | Oui | commun |
IIR | iir1 | Filtrage audio | Obligatoire | Oui | Oui | rare |
libpng | libpng | Encodage PNG des captures d'écran | Facultatif | Oui | Oui | très courant |
Munt | libmt32emu | Lecture Roland MT-32 et CM-32L | Facultatif | Oui | Oui | rare |
Fichier Opus | fichier opus | Lecture CDDA pour les fichiers de pistes encodés Opus | Obligatoire | Non ? | Oui | commun |
SDL2.0 | sdl2 | API indépendante du système d'exploitation pour la vidéo, l'audio et les événements | Obligatoire | Oui | Oui | commun |
SDL_net 2.0 | sdl2-net | API réseau pour série émulée et IPX | Facultatif | Oui | Oui | commun |
glisser | libslirp | Pile TCP/IP virtuelle non privilégiée pour Ethernet | Facultatif | Oui | Oui | moins courant |
SpeexDSP | spexdsp | Rééchantillonnage audio | Obligatoire | Oui | Oui | commun |
Profileur Tracy | tracy | Profil d'événement (développement) | Facultatif | Oui | Oui | rare |
zlib | zlib | Capture vidéo ZMBV | Facultatif | Non ? | Oui | très courant |
zlib-ng | zlib-ng | Capture vidéo ZMBV (remplacement zlib plus performant) | Facultatif | Oui | Oui | commun |
Voir les fichiers d'enveloppement Meson dans les sous-projets des versions actuelles de la bibliothèque que nous utilisons.
Cloner le dépôt (étape unique) :
git clone https://github.com/dosbox-staging/dosbox-staging.git
Lisez BUILD.md pour le guide de compilation complet.
Note
La prise en charge de CMake est actuellement une fonctionnalité expérimentale en interne uniquement, en cours de réalisation ; il n'est pas encore prêt pour la consommation publique. Veuillez ignorer les fichiers
CMakeLists.txt
dans l'arborescence source.
Installez les dépendances de build appropriées à votre système d'exploitation :
# 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
Découvrez la branche principale :
# commit or stash any personal code changes
git checkout main -f
Extrayez les dernières mises à jour. Ceci est nécessaire à chaque fois que vous souhaitez une nouvelle build :
git pull
Configurez la construction. Il s'agit d'une étape unique, soit après le clonage du dépôt, soit après le nettoyage de vos répertoires de travail :
meson setup build
Ce qui précède active toutes les fonctionnalités fonctionnelles de DOSBox Staging. Si vous souhaitez voir toutes les options de configuration de Meson, exécutez meson configure
.
Compilez les sources. Ceci est nécessaire à chaque fois que vous souhaitez une nouvelle build :
meson compile -C build
Votre binaire est : build/dosbox
Le binaire dépend des ressources locales qui lui sont liées, nous suggérons donc de créer un lien symbolique vers le binaire depuis votre PATH
, par exemple dans ~/.local/bin/
.
Amusez-vous!
Tout d’abord, vous devez configurer vcpkg pour installer les dépendances de build. Une fois vcpkg démarré, ouvrez PowerShell et exécutez :
PS: > .vcpkg integrate install
Cette étape garantira que MSVC peut utiliser vcpkg pour créer, rechercher et lier toutes les dépendances.
Démarrez Visual Studio et ouvrez le fichier vsdosbox.sln
. Assurez-vous que x64
est sélectionné comme plate-forme de solution. Utilisez Ctrl+Shift+B pour créer tous les projets.
Notez que la première fois que vous créez une configuration, les dépendances seront créées automatiquement et stockées dans le répertoire vcpkg_installed
. Cela peut prendre beaucoup de temps.
Les instructions pour d’autres systèmes de build et systèmes d’exploitation sont documentées dans BUILD.md.
Liens vers des instructions spécifiques au système d'exploitation : MSYS2, MacPorts, Haiku, NixOS.
Les commits en amont sont importés dans ce dépôt en temps opportun, voir la branche svn/trunk
.
svn/*
- branches de SVNforks/*
- code pour divers forks DOSBox abandonnésvogons/*
- patchs communautaires publiés sur le forum Vogons Les balises Git correspondant au modèle svn/*
pointent vers les validations référencées par les chemins de « balise » SVN au moment de la création.
De plus, nous attachons des métadonnées facultatives aux commits sous la forme de notes Git. Pour les récupérer, exécutez :
git fetch origin " refs/notes/*:refs/notes/* "
Veuillez vous référer au guide de documentation avant d'apporter des modifications au site Web ou à la documentation.