Este repositório tenta modernizar a base de código do DOSBox usando práticas e ferramentas de desenvolvimento atuais, corrigindo problemas e adicionando recursos que suportam melhor os sistemas atuais.
Linux, Windows, macOS
O desenvolvimento constrói.
Recurso | Status |
---|---|
Controle de versão | Git |
Linguagem | C++20 |
SDL | >= 2.0.5 |
Registro | Loguru para C++ 5 |
Sistema de construção | Meson ou Visual Studio 2022 |
IC | Sim |
Análise estática | Sim 1,3,4 |
Análise dinâmica | Sim |
formato clang | Sim |
Construções de desenvolvimento | Sim |
Testes unitários | Sim 6 |
Testes de regressão automatizados | WIP |
O DOSBox Staging possui as seguintes dependências de biblioteca:
Pacote | Nome da biblioteca | Fornece recurso | Presença | Envoltório de méson | VCPKG | Disponibilidade do repositório |
---|---|---|---|---|---|---|
Fluid Synth | sintetizador de fluidos | Reprodução MIDI geral | Opcional | sim | sim | comum |
Teste do Google + simulação | gmock | Framework para testes unitários (desenvolvimento) | Opcional | sim | sim | comum |
IIR | iir1 | Filtragem de áudio | Obrigatório | sim | sim | cru |
libpng | libpng | Codificação PNG de capturas de tela | Opcional | sim | sim | muito comum |
Munt | libmt32emu | Reprodução Roland MT-32 e CM-32L | Opcional | sim | sim | cru |
Arquivo Opus | arquivo opus | Reprodução CDDA para arquivos de trilha codificados em Opus | Obrigatório | não ? | sim | comum |
SDL 2.0 | sdl2 | API independente de sistema operacional para vídeo, áudio e eventos | Obrigatório | sim | sim | comum |
SDL_net 2.0 | sdl2-net | API de rede para serial emulada e IPX | Opcional | sim | sim | comum |
gole | libslirp | Pilha TCP/IP virtual sem privilégios para Ethernet | Opcional | sim | sim | menos comum |
SpeexDSP | spexdsp | Reamostragem de áudio | Obrigatório | sim | sim | comum |
Perfilador Tracy | Tracy | Perfil do evento (desenvolvimento) | Opcional | sim | sim | cru |
zlib | zlib | Captura de vídeo ZMBV | Opcional | não ? | sim | muito comum |
zlib-ng | zlib-ng | Captura de vídeo ZMBV (substituição zlib com melhor desempenho) | Opcional | sim | sim | comum |
Veja os arquivos wrap do Meson nos subprojetos das versões atuais da biblioteca que usamos.
Clone o repositório (etapa única):
git clone https://github.com/dosbox-staging/dosbox-staging.git
Leia BUILD.md para obter o guia de compilação completo.
Observação
O suporte ao CMake é atualmente um recurso experimental apenas interno e em andamento; ainda não está pronto para consumo público. Ignore os arquivos
CMakeLists.txt
na árvore de origem.
Instale dependências de compilação apropriadas para o seu sistema operacional:
# 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
Confira a filial principal:
# commit or stash any personal code changes
git checkout main -f
Obtenha as atualizações mais recentes. Isso é necessário toda vez que você deseja uma nova construção:
git pull
Configure a compilação. Esta é uma etapa única após clonar o repositório ou limpar seus diretórios de trabalho:
meson setup build
O acima ativa todos os recursos funcionais do DOSBox Staging. Se você estiver interessado em ver todas as opções de configuração do Meson, execute meson configure
.
Compile as fontes. Isso é necessário toda vez que você deseja uma nova construção:
meson compile -C build
Seu binário é: build/dosbox
O binário depende dos recursos locais relativos a ele, por isso sugerimos criar um link simbólico para o binário do seu PATH
, como em ~/.local/bin/
.
Divirta-se!
Primeiro, você precisa configurar o vcpkg para instalar dependências de compilação. Depois que o vcpkg for inicializado, abra o PowerShell e execute:
PS: > .vcpkg integrate install
Esta etapa garantirá que o MSVC possa usar o vcpkg para construir, localizar e vincular todas as dependências.
Inicie o Visual Studio e abra o arquivo vsdosbox.sln
. Certifique-se de ter selecionado x64
como plataforma de solução. Use Ctrl+Shift+B para construir todos os projetos.
Observe que na primeira vez que você criar uma configuração, as dependências serão criadas automaticamente e armazenadas no diretório vcpkg_installed
. Isso pode levar um tempo significativo.
As instruções para outros sistemas de compilação e sistemas operacionais estão documentadas em BUILD.md.
Links para instruções específicas do sistema operacional: MSYS2, MacPorts, Haiku, NixOS.
Os commits upstream são importados para este repositório em tempo hábil, consulte branch svn/trunk
.
svn/*
- ramificações do SVNforks/*
- código para vários forks abandonados do DOSBoxvogons/*
– patches da comunidade postados no fórum Vogons As tags Git que correspondem ao padrão svn/*
estão apontando para os commits referenciados pelos caminhos de "tag" SVN no momento da criação.
Além disso, anexamos alguns metadados opcionais aos commits na forma de notas do Git. Para buscá-los, execute:
git fetch origin " refs/notes/*:refs/notes/* "
Consulte o guia de documentação antes de fazer alterações no site ou na documentação.