Repositori ini berupaya memodernisasi basis kode DOSBox dengan menggunakan praktik dan alat pengembangan terkini, memperbaiki masalah, dan menambahkan fitur yang lebih mendukung sistem saat ini.
Linux, Windows, macOS
Pembangunan membangun.
Fitur | Status |
---|---|
Kontrol versi | Git |
Bahasa | C++20 |
SDL | >= 2.0.5 |
Pencatatan | Logguru untuk C++ 5 |
Sistem pembangunan | Meson atau Visual Studio 2022 |
CI | Ya |
Analisis statis | Ya 1,3,4 |
Analisis dinamis | Ya |
format dentang | Ya |
Pembangunan membangun | Ya |
Tes satuan | Ya 6 |
Tes regresi otomatis | WIP |
DOSBox Staging memiliki dependensi perpustakaan berikut:
Kemasan | nama Lib | Menyediakan fitur | Kehadiran | Bungkus meson | VCPKG | Ketersediaan repo |
---|---|---|---|---|---|---|
FluidSynth | fluidsynth | Pemutaran MIDI umum | Opsional | Ya | Ya | umum |
Tes Google+Ejekan | gmock | Kerangka untuk pengujian unit (pengembangan) | Opsional | Ya | Ya | umum |
IIR | iir1 | Pemfilteran audio | Wajib | Ya | Ya | langka |
libpng | libpng | Pengkodean tangkapan layar dalam format PNG | Opsional | Ya | Ya | sangat umum |
Munt | libmt32emu | Pemutaran Roland MT-32 dan CM-32L | Opsional | Ya | Ya | langka |
File Karya | file karya | Pemutaran CDDA untuk file track yang dikodekan Opus | Wajib | TIDAK ? | Ya | umum |
SDL 2.0 | sdl2 | API OS-agnostik untuk video, audio, dan acara | Wajib | Ya | Ya | umum |
SDL_net 2.0 | sdl2-net | API Jaringan untuk serial yang ditiru dan IPX | Opsional | Ya | Ya | umum |
menyelinap | libslirp | Tumpukan TCP/IP virtual tanpa hak istimewa untuk Ethernet | Opsional | Ya | Ya | kurang umum |
SpeexDSP | kecepatandsp | Pengambilan sampel ulang audio | Wajib | Ya | Ya | umum |
Tracy Profiler | tracy | Profil acara (pengembangan) | Opsional | Ya | Ya | langka |
zlib | zlib | Pengambilan video ZMBV | Opsional | TIDAK ? | Ya | sangat umum |
zlib-ng | zlib-ng | Pengambilan video ZMBV (pengganti zlib yang lebih berperforma) | Opsional | Ya | Ya | umum |
Lihat file bungkus Meson di subproyek versi perpustakaan saat ini yang kami gunakan.
Mengkloning repositori (langkah satu kali):
git clone https://github.com/dosbox-staging/dosbox-staging.git
Baca BUILD.md untuk panduan kompilasi yang komprehensif.
Catatan
Dukungan CMake saat ini hanya bersifat eksperimental, fitur yang masih dalam proses; itu belum siap untuk dikonsumsi publik. Harap abaikan file
CMakeLists.txt
di pohon sumber.
Instal dependensi build yang sesuai untuk OS Anda:
# 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
Lihat cabang utama:
# commit or stash any personal code changes
git checkout main -f
Tarik pembaruan terkini. Ini diperlukan setiap kali Anda menginginkan bangunan baru:
git pull
Siapkan bangunannya. Ini adalah langkah satu kali setelah mengkloning repo atau membersihkan direktori kerja Anda:
meson setup build
Hal di atas mengaktifkan semua fitur fungsional DOSBox Staging. Jika Anda tertarik untuk melihat semua opsi pengaturan Meson, jalankan meson configure
.
Kumpulkan sumbernya. Ini diperlukan setiap kali Anda menginginkan bangunan baru:
meson compile -C build
Biner Anda adalah: build/dosbox
Biner bergantung pada sumber daya lokal yang terkait dengannya, jadi kami menyarankan untuk menghubungkannya ke biner dari PATH
Anda, seperti ke ~/.local/bin/
.
Selamat bersenang-senang!
Pertama, Anda perlu menyiapkan vcpkg untuk menginstal dependensi build. Setelah vcpkg di-bootstrap, buka PowerShell dan jalankan:
PS: > .vcpkg integrate install
Langkah ini akan memastikan bahwa MSVC dapat menggunakan vcpkg untuk membangun, menemukan dan menghubungkan semua dependensi.
Mulai Visual Studio dan buka file vsdosbox.sln
. Pastikan Anda memilih x64
sebagai platform solusi. Gunakan Ctrl+Shift+B untuk membangun semua proyek.
Catatan, pertama kali Anda membuat konfigurasi, dependensi akan dibuat secara otomatis dan disimpan di direktori vcpkg_installed
. Hal ini dapat memakan waktu yang cukup lama.
Petunjuk untuk sistem build dan sistem operasi lainnya didokumentasikan di BUILD.md.
Tautan ke instruksi khusus OS: MSYS2, MacPorts, Haiku, NixOS.
Komitmen hulu diimpor ke repo ini tepat waktu, lihat cabang svn/trunk
.
svn/*
- cabang dari SVNforks/*
- kode untuk berbagai fork DOSBox yang ditinggalkanvogons/*
- patch komunitas yang diposting di forum Vogons Pola pencocokan tag Git svn/*
menunjuk ke penerapan yang direferensikan oleh jalur "tag" SVN pada saat pembuatan.
Selain itu, kami melampirkan beberapa metadata opsional ke penerapan dalam bentuk catatan Git. Untuk mengambilnya, jalankan:
git fetch origin " refs/notes/*:refs/notes/* "
Silakan merujuk ke panduan dokumentasi sebelum melakukan perubahan pada situs web atau dokumentasi.