Este repositorio intenta modernizar el código base de DOSBox mediante el uso de prácticas y herramientas de desarrollo actuales, solucionando problemas y agregando características que soporten mejor los sistemas actuales.
Linux, Windows, macOS
El desarrollo construye.
Característica | Estado |
---|---|
Control de versiones | git |
Idioma | C++20 |
SDL | >= 2.0.5 |
Explotación florestal | Loguru para C++ 5 |
sistema de construcción | Mesón o Visual Studio 2022 |
CI | Sí |
Análisis estático | Si 1,3,4 |
Análisis dinámico | Sí |
formato clang | Sí |
El desarrollo construye | Sí |
Pruebas unitarias | si 6 |
Pruebas de regresión automatizadas | WIP |
DOSBox Staging tiene las siguientes dependencias de biblioteca:
Paquete | nombre de la biblioteca | Proporciona característica | Presencia | Envoltura de mesón | VCPKG | Disponibilidad de repositorio |
---|---|---|---|---|---|---|
Sintetizador fluido | sintetizador fluido | Reproducción MIDI general | Opcional | Sí | Sí | común |
Prueba de Google+simulacro | mock | Marco para pruebas unitarias (desarrollo) | Opcional | Sí | Sí | común |
IIR | iir1 | filtrado de audio | Obligatorio | Sí | Sí | extraño |
libpng | libpng | Codificación PNG de capturas de pantalla | Opcional | Sí | Sí | muy común |
munt | libmt32emu | Reproducción Roland MT-32 y CM-32L | Opcional | Sí | Sí | extraño |
Archivo Opus | archivo opus | Reproducción CDDA para archivos de pistas codificados en Opus | Obligatorio | No ? | Sí | común |
SDL 2.0 | sdl2 | API independiente del sistema operativo para video, audio y eventos | Obligatorio | Sí | Sí | común |
SDL_net 2.0 | sdl2-net | API de red para serie emulada e IPX | Opcional | Sí | Sí | común |
resbalar | libslirp | Pila TCP/IP virtual sin privilegios para Ethernet | Opcional | Sí | Sí | menos común |
SpeexDSP | speexdsp | Remuestreo de audio | Obligatorio | Sí | Sí | común |
Tracy Perfilador | tracy | Perfil del evento (desarrollo) | Opcional | Sí | Sí | extraño |
zlib | zlib | Captura de vídeo ZMBV | Opcional | No ? | Sí | muy común |
zlib-ng | zlib-ng | Captura de vídeo ZMBV (reemplazo de zlib con mayor rendimiento) | Opcional | Sí | Sí | común |
Vea los archivos de ajuste de Meson en los subproyectos de las versiones actuales de la biblioteca que utilizamos.
Clonar el repositorio (paso único):
git clone https://github.com/dosbox-staging/dosbox-staging.git
Lea BUILD.md para obtener una guía de compilación completa.
Nota
La compatibilidad con CMake es actualmente una característica experimental en proceso de trabajo, solo interna; aún no está listo para el consumo público. Ignore los archivos
CMakeLists.txt
en el árbol de origen.
Instale las dependencias de compilación apropiadas para su sistema operativo:
# 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
Consulta la sucursal principal:
# commit or stash any personal code changes
git checkout main -f
Obtenga las últimas actualizaciones. Esto es necesario cada vez que desee una nueva compilación:
git pull
Configura la construcción. Este es un paso único, ya sea después de clonar el repositorio o limpiar sus directorios de trabajo:
meson setup build
Lo anterior habilita todas las características funcionales de DOSBox Staging. Si está interesado en ver todas las opciones de configuración de Meson, ejecute meson configure
.
Recopila las fuentes. Esto es necesario cada vez que desee una nueva compilación:
meson compile -C build
Tu binario es: build/dosbox
El binario depende de los recursos locales relativos a él, por lo que sugerimos crear un enlace simbólico al binario desde su PATH
, como por ejemplo en ~/.local/bin/
.
¡Divertirse!
Primero, necesita configurar vcpkg para instalar las dependencias de compilación. Una vez que se inicia vcpkg, abra PowerShell y ejecute:
PS: > .vcpkg integrate install
Este paso garantizará que MSVC pueda usar vcpkg para crear, buscar y vincular todas las dependencias.
Inicie Visual Studio y abra el archivo vsdosbox.sln
. Asegúrese de tener seleccionado x64
como plataforma de solución. Utilice Ctrl+Shift+B para crear todos los proyectos.
Tenga en cuenta que la primera vez que cree una configuración, las dependencias se crearán automáticamente y se almacenarán en el directorio vcpkg_installed
. Esto puede llevar un tiempo considerable.
Las instrucciones para otros sistemas de compilación y sistemas operativos están documentadas en BUILD.md.
Enlaces a instrucciones específicas del sistema operativo: MSYS2, MacPorts, Haiku, NixOS.
Las confirmaciones ascendentes se importan a este repositorio de manera oportuna; consulte la rama svn/trunk
.
svn/*
- ramas de SVNforks/*
- código para varias bifurcaciones de DOSBox abandonadasvogons/*
- parches de la comunidad publicados en el foro de Vogons Las etiquetas Git que coinciden con el patrón svn/*
apuntan a las confirmaciones a las que hacen referencia las rutas de "etiquetas" SVN en el momento de la creación.
Además, adjuntamos algunos metadatos opcionales a las confirmaciones en forma de notas de Git. Para recuperarlos, ejecute:
git fetch origin " refs/notes/*:refs/notes/* "
Consulte la guía de documentación antes de realizar cambios en el sitio web o la documentación.