该存储库尝试通过使用当前的开发实践和工具、修复问题以及添加更好地支持当今系统的功能来实现 DOSBox 代码库的现代化。
Linux、Windows、macOS
发展建设。
特征 | 地位 |
---|---|
版本控制 | git |
语言 | C++20 |
雪迪龙 | >= 2.0.5 |
记录 | C++ 5的 Loguru |
构建系统 | 介子或 Visual Studio 2022 |
CI | 是的 |
静态分析 | 是1,3,4 |
动态分析 | 是的 |
clang 格式 | 是的 |
开发构建 | 是的 |
单元测试 | 是6 |
自动回归测试 | 在制品 |
DOSBox Staging 具有以下库依赖项:
包裹 | 库名称 | 提供功能 | 在场 | 介子包裹 | VCPKG | 回购可用性 |
---|---|---|---|---|---|---|
流体合成器 | 流体合成器 | 通用 MIDI 播放 | 选修的 | 是的 | 是的 | 常见的 |
谷歌测试+模拟 | 格莫克 | 单元测试(开发)框架 | 选修的 | 是的 | 是的 | 常见的 |
IIR | IR1 | 音频过滤 | 强制的 | 是的 | 是的 | 稀有的 |
库文件 | 库文件 | 屏幕截图的 PNG 编码 | 选修的 | 是的 | 是的 | 很常见 |
穆特 | libmt32emu | Roland MT-32 和 CM-32L 播放 | 选修的 | 是的 | 是的 | 稀有的 |
作品文件 | 作品文件 | Opus 编码曲目文件的 CDDA 播放 | 强制的 | 不? | 是的 | 常见的 |
雪迪龙2.0 | sdl2 | 用于视频、音频和事件的与操作系统无关的 API | 强制的 | 是的 | 是的 | 常见的 |
SDL_net 2.0 | sdl2网络 | 用于模拟串行和 IPX 的网络 API | 选修的 | 是的 | 是的 | 常见的 |
斯利普 | 库斯利普 | 用于以太网的非特权虚拟 TCP/IP 堆栈 | 选修的 | 是的 | 是的 | 不太常见 |
DSP | DSP | 音频重采样 | 强制的 | 是的 | 是的 | 常见的 |
特雷西探查器 | 特雷西 | 活动简介(发展) | 选修的 | 是的 | 是的 | 稀有的 |
兹库 | 兹库 | ZMBV视频捕捉 | 选修的 | 不? | 是的 | 很常见 |
zlib ng | zlib ng | ZMBV 视频捕获(性能更高的 zlib 替代品) | 选修的 | 是的 | 是的 | 常见的 |
请参阅我们使用的当前库版本的子项目中的 Meson 包装文件。
克隆存储库(一次性步骤):
git clone https://github.com/dosbox-staging/dosbox-staging.git
阅读 BUILD.md 以获得全面的编译指南。
笔记
CMake 支持目前是一项实验性内部专用功能,正在进行中;它还没有准备好供公众消费。请忽略源树中的
CMakeLists.txt
文件。
安装适合您操作系统的构建依赖项:
# 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
查看主分支:
# commit or stash any personal code changes
git checkout main -f
拉取最新更新。每次你想要一个新的构建时,这是必要的:
git pull
设置构建。这是克隆存储库或清理工作目录之后的一次性步骤:
meson setup build
以上启用了 DOSBox Staging 的所有功能特性。如果您有兴趣查看 Meson 的所有设置选项,请运行meson configure
。
编译源代码。每次你想要一个新的构建时,这是必要的:
meson compile -C build
您的二进制文件是: build/dosbox
该二进制文件取决于与其相关的本地资源,因此我们建议从PATH
符号链接到该二进制文件,例如~/.local/bin/
。
玩得开心!
首先,您需要设置 vcpkg 来安装构建依赖项。 vcpkg 启动后,打开 PowerShell 并运行:
PS: > .vcpkg integrate install
此步骤将确保 MSVC 可以使用 vcpkg 构建、查找和链接所有依赖项。
启动 Visual Studio 并打开文件vsdosbox.sln
。确保选择x64
作为解决方案平台。使用Ctrl+Shift+B构建所有项目。
请注意,第一次构建配置时,依赖项将自动构建并存储在vcpkg_installed
目录中。这可能需要很长的时间。
其他构建系统和操作系统的说明记录在 BUILD.md 中。
操作系统特定指令的链接:MSYS2、MacPorts、Haiku、NixOS。
上游提交会及时导入到此存储库,请参阅分支svn/trunk
。
svn/*
- 来自 SVN 的分支forks/*
- 各种废弃的 DOSBox 分支的代码vogons/*
- Vogons 论坛上发布的社区补丁与模式svn/*
匹配的 Git 标签指向创建时 SVN“标签”路径引用的提交。
此外,我们以 Git 注释的形式将一些可选元数据附加到提交中。要获取它们,请运行:
git fetch origin " refs/notes/*:refs/notes/* "
在对网站或文档进行更改之前,请参阅文档指南。