พื้นที่เก็บข้อมูลนี้พยายามที่จะปรับปรุงฐานข้อมูลโค้ด DOSBox ให้ทันสมัยโดยใช้แนวทางปฏิบัติและเครื่องมือในการพัฒนาปัจจุบัน การแก้ไขปัญหา และเพิ่มคุณลักษณะที่สนับสนุนระบบในปัจจุบันได้ดียิ่งขึ้น
ลินุกซ์, วินโดวส์, macOS
การพัฒนาสร้าง
คุณสมบัติ | สถานะ |
---|---|
การควบคุมเวอร์ชัน | คอมไพล์ |
ภาษา | ค++20 |
เอสดีแอล | >= 2.0.5 |
การบันทึก | Loguru สำหรับ C ++ 5 |
สร้างระบบ | Meson หรือ Visual Studio 2022 |
ซีไอ | ใช่ |
การวิเคราะห์แบบคงที่ | ใช่ 1,3,4 |
การวิเคราะห์แบบไดนามิก | ใช่ |
เสียงดังกราวรูปแบบ | ใช่ |
การพัฒนาสร้าง | ใช่ |
การทดสอบหน่วย | ใช่ 6 |
การทดสอบการถดถอยอัตโนมัติ | วีไอพี |
DOSBox Staging มีการพึ่งพาไลบรารีดังต่อไปนี้:
บรรจุุภัณฑ์ | ชื่อลิบ | ให้คุณสมบัติ | การมีอยู่ | เมสันห่อ | วีซีพีเคจี | ความพร้อมใช้งานของ Repo |
---|---|---|---|---|---|---|
ฟลูอิดซินธ์ | น้ำยาสังเคราะห์ | การเล่น MIDI ทั่วไป | ไม่จำเป็น | ใช่ | ใช่ | ทั่วไป |
ทดสอบ Google + จำลอง | จีม็อค | กรอบการทดสอบหน่วย (การพัฒนา) | ไม่จำเป็น | ใช่ | ใช่ | ทั่วไป |
ไออาร์ | iir1 | การกรองเสียง | บังคับ | ใช่ | ใช่ | หายาก |
libpng | libpng | การเข้ารหัส PNG ของการจับภาพหน้าจอ | ไม่จำเป็น | ใช่ | ใช่ | ธรรมดามาก |
มึนต์ | libmt32emu | การเล่น Roland MT-32 และ CM-32L | ไม่จำเป็น | ใช่ | ใช่ | หายาก |
ไฟล์บทประพันธ์ | opusfile | การเล่น CDDA สำหรับไฟล์แทร็กที่เข้ารหัส Opus | บังคับ | เลขที่ ? | ใช่ | ทั่วไป |
เอสดีแอล 2.0 | sdl2 | OS-Agnostic API สำหรับวิดีโอ เสียง และเหตุการณ์ | บังคับ | ใช่ | ใช่ | ทั่วไป |
SDL_net 2.0 | sdl2-สุทธิ | Network API สำหรับการจำลองแบบอนุกรมและ IPX | ไม่จำเป็น | ใช่ | ใช่ | ทั่วไป |
เล็ดลอด | ลิบสลิร์ป | สแต็ก TCP/IP เสมือนที่ไม่มีสิทธิพิเศษสำหรับอีเทอร์เน็ต | ไม่จำเป็น | ใช่ | ใช่ | ธรรมดาน้อยกว่า |
SpeexDSP | ความเร็ว | การสุ่มตัวอย่างเสียง | บังคับ | ใช่ | ใช่ | ทั่วไป |
เทรซี่ โปรไฟล์เมอร์ | เทรซี่ | โปรไฟล์เหตุการณ์ (การพัฒนา) | ไม่จำเป็น | ใช่ | ใช่ | หายาก |
ซลิบ | ซลิบ | การจับภาพวิดีโอ ZMBV | ไม่จำเป็น | เลขที่ ? | ใช่ | ธรรมดามาก |
zlib-ng | zlib-ng | การจับภาพวิดีโอ ZMBV (การแทนที่ zlib ที่มีประสิทธิภาพมากขึ้น) | ไม่จำเป็น | ใช่ | ใช่ | ทั่วไป |
ดูไฟล์ Meson wrap ในโปรเจ็กต์ย่อยของไลบรารีเวอร์ชันปัจจุบันที่เราใช้
โคลนที่เก็บ (ขั้นตอนครั้งเดียว):
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
ตั้งค่าการสร้าง นี่เป็นขั้นตอนที่ทำเพียงครั้งเดียวหลังจากการโคลน Repo หรือล้างไดเร็กทอรีการทำงานของคุณ:
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
คอมมิตอัปสตรีมจะถูกนำเข้าไปยัง Repo นี้ในเวลาที่เหมาะสม โปรดดูที่สาขา svn/trunk
svn/*
- สาขาจาก SVNforks/*
- รหัสสำหรับส้อม DOSBox ที่ถูกละทิ้งต่างๆvogons/*
- แพตช์ชุมชนที่โพสต์บนฟอรัม Vogons แท็ก Git ที่ตรงกับรูปแบบ svn/*
ชี้ไปที่คอมมิตที่อ้างอิงโดยเส้นทาง "แท็ก" ของ SVN ในขณะที่สร้าง
นอกจากนี้ เรายังแนบข้อมูลเมตาเสริมบางส่วนไปกับการคอมมิตในรูปแบบของบันทึก Git หากต้องการดึงข้อมูล ให้รัน:
git fetch origin " refs/notes/*:refs/notes/* "
โปรดดูคู่มือเอกสารก่อนที่จะทำการเปลี่ยนแปลงเว็บไซต์หรือเอกสารประกอบ