이 저장소는 현재 개발 방식과 도구를 사용하고, 문제를 수정하고, 오늘날의 시스템을 더 잘 지원하는 기능을 추가하여 DOSBox 코드베이스를 현대화하려고 시도합니다.
리눅스, 윈도우, 맥OS
개발 빌드.
특징 | 상태 |
---|---|
버전 관리 | 힘내 |
언어 | C++20 |
SDL | >= 2.0.5 |
벌채 반출 | C++ 5 용 로그루 |
빌드 시스템 | 중간자 또는 Visual Studio 2022 |
CI | 예 |
정적 분석 | 예 1,3,4 |
동적 분석 | 예 |
clang 형식 | 예 |
개발 빌드 | 예 |
단위 테스트 | 예 6 |
자동화된 회귀 테스트 | WIP |
DOSBox Staging에는 다음과 같은 라이브러리 종속성이 있습니다.
패키지 | 라이브러리 이름 | 기능 제공 | 있음 | 중간자 랩 | VCPKG | 레포 가용성 |
---|---|---|---|---|---|---|
FluidSynth | 유체 신스 | 일반 MIDI 재생 | 선택 과목 | 예 | 예 | 흔한 |
구글 테스트+모의 | gmock | 단위 테스트를 위한 프레임워크(개발) | 선택 과목 | 예 | 예 | 흔한 |
IIR | iir1 | 오디오 필터링 | 필수적인 | 예 | 예 | 희귀한 |
libpng | libpng | 화면 캡처의 PNG 인코딩 | 선택 과목 | 예 | 예 | 매우 흔한 |
문트 | libmt32emu | Roland MT-32 및 CM-32L 재생 | 선택 과목 | 예 | 예 | 희귀한 |
오푸스 파일 | opusfile | Opus로 인코딩된 트랙 파일을 위한 CDDA 재생 | 필수적인 | 아니요 ? | 예 | 흔한 |
SDL 2.0 | sdl2 | 비디오, 오디오 및 이벤트를 위한 OS 독립적 API | 필수적인 | 예 | 예 | 흔한 |
SDL_net 2.0 | sdl2-net | 에뮬레이트된 직렬 및 IPX를 위한 네트워크 API | 선택 과목 | 예 | 예 | 흔한 |
미끄러지다 | libslirp | 이더넷용 권한이 없는 가상 TCP/IP 스택 | 선택 과목 | 예 | 예 | 덜 일반적 |
스피엑스DSP | 스피엑스 | 오디오 리샘플링 | 필수적인 | 예 | 예 | 흔한 |
트레이시 프로파일러 | 트레이시 | 이벤트 프로필(개발) | 선택 과목 | 예 | 예 | 희귀한 |
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
파일을 무시하세요.
OS에 적합한 빌드 종속성을 설치합니다.
# 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
바이너리는 그에 관련된 로컬 리소스에 의존하므로 ~/.local/bin/
과 같이 PATH
에서 바이너리에 심볼릭 링크하는 것이 좋습니다.
재미있게 보내세요!
먼저, 빌드 종속성을 설치하려면 vcpkg를 설정해야 합니다. vcpkg가 부트스트랩되면 PowerShell을 열고 다음을 실행합니다.
PS: > .vcpkg integrate install
이 단계에서는 MSVC가 vcpkg를 사용하여 모든 종속성을 구축, 검색 및 연결할 수 있는지 확인합니다.
Visual Studio를 시작하고 vsdosbox.sln
파일을 엽니다. 솔루션 플랫폼으로 x64
선택했는지 확인하세요. 모든 프로젝트를 빌드하려면 Ctrl+Shift+B를 사용하세요.
구성을 처음 빌드하면 종속성이 자동으로 빌드되어 vcpkg_installed
디렉터리에 저장됩니다. 이 작업에는 상당한 시간이 걸릴 수 있습니다.
다른 빌드 시스템 및 운영 체제에 대한 지침은 BUILD.md에 문서화되어 있습니다.
OS별 지침 링크: MSYS2, MacPorts, Haiku, NixOS.
업스트림 커밋은 적시에 이 저장소로 가져옵니다. svn/trunk
분기를 참조하세요.
svn/*
- SVN의 분기forks/*
- 버려진 다양한 DOSBox 포크에 대한 코드vogons/*
- Vogons 포럼에 게시된 커뮤니티 패치 svn/*
패턴과 일치하는 Git 태그는 생성 시 SVN "태그" 경로에서 참조하는 커밋을 가리킵니다.
또한 일부 선택적 메타데이터를 Git 메모 형식으로 커밋에 첨부합니다. 이를 가져오려면 다음을 실행하세요.
git fetch origin " refs/notes/*:refs/notes/* "
웹사이트나 설명서를 변경하기 전에 설명서 가이드를 참조하세요.