Этот репозиторий пытается модернизировать кодовую базу DOSBox, используя текущие методы и инструменты разработки, исправляя проблемы и добавляя функции, которые лучше поддерживают современные системы.
Линукс, Виндовс, МакОС
Развитие строит.
Особенность | Статус |
---|---|
Контроль версий | Гит |
Язык | С++20 |
СДЛ | >= 2.0.5 |
Ведение журнала | Логуру для C++ 5 |
Система сборки | Мезон или Visual Studio 2022 |
КИ | Да |
Статический анализ | Да 1,3,4 |
Динамический анализ | Да |
clang-формат | Да |
Разработка сборки | Да |
Модульные тесты | Да 6 |
Автоматизированные регрессионные тесты | НЗП |
DOSBox Staging имеет следующие зависимости библиотеки:
Упаковка | Имя библиотеки | Обеспечивает функцию | Присутствие | Мезонная упаковка | ВЦПКГ | Доступность репо |
---|---|---|---|---|---|---|
FluidSynth | флюидсинт | Общее воспроизведение MIDI | Необязательный | да | да | общий |
Google Тест+Мок | гмок | Фреймворк для модульного тестирования (разработка) | Необязательный | да | да | общий |
БИХ | иир1 | Фильтрация звука | Обязательный | да | да | редкий |
libpng | libpng | PNG-кодировка снимков экрана | Необязательный | да | да | очень распространенный |
Мунт | libmt32emu | Воспроизведение Roland MT-32 и CM-32L | Необязательный | да | да | редкий |
Опус-файл | опусфайл | Воспроизведение CDDA для файлов треков, закодированных Opus | Обязательный | нет ? | да | общий |
СДЛ 2.0 | сдл2 | Независимый от ОС API для видео, аудио и событий | Обязательный | да | да | общий |
СДЛ_нет 2.0 | sdl2-net | Сетевой API для эмулируемого последовательного порта и IPX | Необязательный | да | да | общий |
скользить | libslirp | Непривилегированный виртуальный стек TCP/IP для Ethernet | Необязательный | да | да | менее распространенный |
SpeexDSP | спиксдсп | Передискретизация звука | Обязательный | да | да | общий |
Трейси Профилер | Трейси | Профиль мероприятия (разработка) | Необязательный | да | да | редкий |
zlib | zlib | Захват видео 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/*
- ответвления от SVNforks/*
- код для различных заброшенных форков DOSBoxvogons/*
— патчи сообщества, размещенные на форуме Vogons. Теги Git, соответствующие шаблону svn/*
указывают на коммиты, на которые ссылаются пути «тегов» SVN во время создания.
Кроме того, мы прикрепляем к коммитам некоторые необязательные метаданные в виде заметок Git. Чтобы получить их, запустите:
git fetch origin " refs/notes/*:refs/notes/* "
Пожалуйста, обратитесь к руководству по документации, прежде чем вносить изменения на веб-сайт или в документацию.