Last updated on

طريقة بناء RPCS3 من المصدر على Windows وLinux | الدليل المحدث


<header class="rb-hero"><p>هذا الدليل موجه للمطورين والمستخدمين اللي يحتاجون يبنون RPCS3 بأنفسهم
        للتطوير أو الاختبار. استخدام النسخة الجاهزة يظل الأفضل للمستخدم العادي،
        أما البناء من المصدر فيحتاج أدوات تطوير ومساحة ووقت تجميع.
    </p>
</header>

<div class="rb-image">
    <a href="https://github.com/RPCS3/rpcs3" rel="noopener noreferrer" target="_blank">
        <img alt="مستودع RPCS3 الرسمي على GitHub" loading="eager" src="https://opengraph.githubassets.com/1/RPCS3/rpcs3" />
    </a>
    <p class="rb-caption">
        الكود المصدري الرسمي لـ RPCS3 موجود داخل مستودع المشروع على GitHub.
    </p>
</div>

<section class="rb-card">
    <h3>مهم قبل البدء</h3>

    <div class="rb-platform-grid">
        <div class="rb-platform-card">
            <strong>Windows وLinux</strong>
            منصات البناء المدعومة رسميًا من فريق RPCS3.
        </div>

        <div class="rb-platform-card">
            <strong>macOS وFreeBSD والمنصات الثانية</strong>
            ممكن يشتغل البناء عليها، لكنها مو مدعومة بنفس مستوى Windows وLinux
            وقد تتعطل تعليماتها مع التحديثات.
        </div>
    </div>

    <div class="rb-warning">
        تعليمات قديمة تعتمد على <span class="rb-code">Qt 6.6.3</span> أو
        <span class="rb-code">CMake 3.16.9</span> أو
        <span class="rb-code">GCC 11</span> و
        <span class="rb-code">Clang 12</span> ما عادت تمثل متطلبات المشروع الحالية.
    </div>

    <div class="rb-note">
        هذا شرح بناء وليس شرح تشغيل ألعاب. المستخدم العادي يحمل آخر Build
        جاهز من صفحة تنزيل RPCS3 الرسمية.
    </div>
</section>

<section class="rb-card">
    <h3>المتطلبات الحالية</h3>

    <h4>Windows 10 أو أحدث</h4>

    <div class="rb-table-wrap">
        <table>
            <thead>
                <tr>
                    <th>الأداة</th>
                    <th>الإصدار المطلوب</th>
                    <th>ملاحظات</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Visual Studio</td>
                    <td>2022 أو 2026</td>
                    <td>حل <span class="rb-code">rpcs3.sln</span> هو المسار المفضل للبناء على Windows.</td>
                </tr>
                <tr>
                    <td>CMake</td>
                    <td>3.28.0 أو أحدث</td>
                    <td>اختياري عند استخدام Visual Studio، لكن Visual Studio 2026 يحتاج CMake 4.2.0 أو أحدث.</td>
                </tr>
                <tr>
                    <td>Python</td>
                    <td>3.6 أو أحدث</td>
                    <td>لازم يكون مضاف إلى PATH.</td>
                </tr>
                <tr>
                    <td>Qt</td>
                    <td>6.11.1</td>
                    <td>ثبت مكون <span class="rb-code">qtmultimedia</span> مع نسخة MSVC.</td>
                </tr>
                <tr>
                    <td>Vulkan SDK</td>
                    <td>1.4.341.1</td>
                    <td>استخدم الإصدار المحدد في الدليل؛ الإصدارات المستقبلية قد تسبب فشلًا مؤقتًا بالبناء.</td>
                </tr>
            </tbody>
        </table>
    </div>

    <h4>Linux</h4>

    <div class="rb-table-wrap">
        <table>
            <thead>
                <tr>
                    <th>الأداة</th>
                    <th>الإصدار المطلوب</th>
                    <th>ملاحظات</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>Clang / GCC</td>
                    <td>Clang 17+ أو GCC 13+</td>
                    <td>هذه الحدود الدنيا الحالية للمترجمات.</td>
                </tr>
                <tr>
                    <td>CMake</td>
                    <td>3.28.0 أو أحدث</td>
                    <td>يستخدم لتوليد ملفات البناء.</td>
                </tr>
                <tr>
                    <td>Qt</td>
                    <td>6.11.1</td>
                    <td>قد تكون حزم Ubuntu أقدم من المطلوب.</td>
                </tr>
                <tr>
                    <td>Vulkan SDK</td>
                    <td>1.4.341.1</td>
                    <td>الإصدارات القديمة ممكن تسبب أخطاء Compile.</td>
                </tr>
                <tr>
                    <td>SDL</td>
                    <td>SDL3</td>
                    <td>مطلوب لواجهة FAudio.</td>
                </tr>
            </tbody>
        </table>
    </div>

    <div class="rb-info">
        مستخدم Nvidia على Linux قد يحتاج تثبيت حزمة
        <span class="rb-code">libglvnd</span>.
    </div>
</section>

<section class="rb-card">
    <h3>استنساخ مستودع RPCS3</h3>

    <p>
        استخدم خيار <span class="rb-code">--recurse-submodules</span>
        عشان ينزل المستودع الرئيسي وجميع المكتبات الفرعية من البداية.
    </p>

    <div class="rb-command"><span class="rb-command-label">PowerShell أو Terminal</span>git clone --recurse-submodules https://github.com/RPCS3/rpcs3.git

cd rpcs3 git submodule sync git submodule update –init –recursive

    <div class="rb-warning">
        تنزيل المستودع بدون Submodules يسبب أخطاء مكتبات مفقودة عند Configure أو Build.
    </div>
</section>

<section class="rb-card">
    <h3>بناء RPCS3 على Windows بالطريقة المفضلة</h3>

    <h4>1. تعريف مسار Qt</h4>

    <p>
        عند استخدام حل Visual Studio العادي، عرّف متغير البيئة
        <span class="rb-code">QTDIR</span> على مسار Qt:
    </p>

    <div class="rb-command"><span class="rb-command-label">مثال</span>QTDIR=C:\Qt\6.11.1\msvc2022_64\</div>

    <p>
        تقدر بدل ذلك تستخدم إضافة
        <span class="rb-code">Qt VS Tools</span> داخل Visual Studio.
    </p>

    <h4>2. فتح الحل</h4>

    <div class="rb-step-grid">
        <div class="rb-step-row">
            <span class="rb-step-number">1</span>
            <div class="rb-step-text">افتح Visual Studio.</div>
        </div>

        <div class="rb-step-row">
            <span class="rb-step-number">2</span>
            <div class="rb-step-text">
                اختر <span class="rb-code">Open a project or solution</span>.
            </div>
        </div>

        <div class="rb-step-row">
            <span class="rb-step-number">3</span>
            <div class="rb-step-text">
                افتح ملف <span class="rb-code">rpcs3.sln</span> من جذر المستودع.
            </div>
        </div>

        <div class="rb-step-row">
            <span class="rb-step-number">4</span>
            <div class="rb-step-text">
                من Solution Configurations اختر
                <span class="rb-code">Release</span>.
            </div>
        </div>
    </div>

    <h4>3. تجهيز LLVM</h4>

    <p>
        تقدر تستخدم مكتبات LLVM الجاهزة لتقليل وقت البناء، أو تبنيها من داخل
        مجموعة المشاريع <span class="rb-code">__BUILD_BEFORE</span>.
    </p>

    <div class="rb-step-grid">
        <div class="rb-step-row">
            <span class="rb-step-number">1</span>
            <div class="rb-step-text">
                وسع مجموعة <span class="rb-code">__BUILD_BEFORE</span>.
            </div>
        </div>

        <div class="rb-step-row">
            <span class="rb-step-number">2</span>
            <div class="rb-step-text">
                ابنِ مشروع <span class="rb-code">llvm_build</span>،
                أو <span class="rb-code">llvm_build_clang_cl</span>
                لو مركب Clang داخل Visual Studio.
            </div>
        </div>
    </div>

    <div class="rb-info">
        مكتبات LLVM غير المحسنة الخاصة بـ Debug مو متوفرة جاهزة.
        استخدام مكتبات Release داخل Debug يؤدي إلى خطأ
        <span class="rb-code">cannot open file</span>.
    </div>

    <h4>4. بناء المحاكي</h4>

    <div class="rb-step-grid">
        <div class="rb-step-row">
            <span class="rb-step-number">1</span>
            <div class="rb-step-text">
                تأكد أن Configuration هو <span class="rb-code">Release</span>.
            </div>
        </div>

        <div class="rb-step-row">
            <span class="rb-step-number">2</span>
            <div class="rb-step-text">
                افتح قائمة <span class="rb-code">Build</span> واختر
                <span class="rb-code">Build Solution</span>.
            </div>
        </div>

        <div class="rb-step-row">
            <span class="rb-step-number">3</span>
            <div class="rb-step-text">
                بعد النجاح بتلقى المحاكي داخل
                <span class="rb-code">&lt;rpcs3_root&gt;\bin</span>.
            </div>
        </div>
    </div>
</section>

<section class="rb-card">
    <h3>البناء على Windows باستخدام CMake</h3>

    <p>
        لمسار CMake عرّف متغير البيئة
        <span class="rb-code">Qt6_ROOT</span> بدل
        <span class="rb-code">QTDIR</span>:
    </p>

    <div class="rb-command"><span class="rb-command-label">مثال</span>Qt6_ROOT=C:\Qt\6.11.1\msvc2022_64\</div>

    <h4>Visual Studio CMake</h4>

    <div class="rb-step-grid">
        <div class="rb-step-row">
            <span class="rb-step-number">1</span>
            <div class="rb-step-text">
                اختر <span class="rb-code">Open a local folder</span>
                وافتح جذر RPCS3.
            </div>
        </div>

        <div class="rb-step-row">
            <span class="rb-step-number">2</span>
            <div class="rb-step-text">
                حول العرض إلى <span class="rb-code">CMake Targets View</span>.
            </div>
        </div>

        <div class="rb-step-row">
            <span class="rb-step-number">3</span>
            <div class="rb-step-text">
                اختر Configuration باسم <span class="rb-code">msvc-release</span>.
            </div>
        </div>

        <div class="rb-step-row">
            <span class="rb-step-number">4</span>
            <div class="rb-step-text">
                نفذ <span class="rb-code">Configure Cache</span> ثم
                <span class="rb-code">Build All</span>.
            </div>
        </div>

        <div class="rb-step-row">
            <span class="rb-step-number">5</span>
            <div class="rb-step-text">
                الناتج يكون داخل
                <span class="rb-code">&lt;rpcs3_root&gt;\build-msvc\bin</span>.
            </div>
        </div>
    </div>

    <h4>Standalone CMake</h4>

    <div class="rb-command"><span class="rb-command-label">من جذر المستودع</span>cmake --preset msvc

cmake –build –preset msvc-release

    <div class="rb-success">
        الناتج يكون داخل
        <span class="rb-code">&lt;rpcs3_root&gt;\build-msvc\bin</span>.
    </div>
</section>

<section class="rb-card">
    <h3>تثبيت متطلبات Linux</h3>

    <h4>Arch Linux</h4>

    <div class="rb-command"><span class="rb-command-label">Terminal</span>sudo pacman -S glew openal cmake ninja vulkan-validation-layers qt6-base qt6-declarative qt6-multimedia qt6-svg sdl3 sndio jack2 base-devel</div>

    <h4>Debian وUbuntu</h4>

    <div class="rb-command"><span class="rb-command-label">Terminal</span>sudo apt-get install build-essential ninja-build libasound2-dev libpulse-dev libopenal-dev libglew-dev zlib1g-dev libedit-dev libvulkan-dev libudev-dev git libevdev-dev libsdl3-dev libjack-dev libsndio-dev libcurl4-openssl-dev qt6-base-dev qt6-base-private-dev qt6-multimedia-dev qt6-svg-dev libxkbcommon-dev</div>

    <div class="rb-warning">
        مستودعات Ubuntu ممكن تكون أقدم من إصدارات Qt وGCC وVulkan وCMake
        المطلوبة للمشروع، لذلك لا تعتمد على رقم الحزمة فقط وتأكد من الإصدار الفعلي.
    </div>

    <h4>Fedora</h4>

    <div class="rb-command"><span class="rb-command-label">Terminal</span>sudo dnf install alsa-lib-devel cmake ninja-build glew glew-devel libatomic libevdev-devel libudev-devel openal-soft-devel qt6-qtbase-devel qt6-qtbase-private-devel vulkan-devel pipewire-jack-audio-connection-kit-devel qt6-qtmultimedia-devel qt6-qtsvg-devel llvm-devel libcurl-devel</div>

    <h4>OpenSUSE</h4>

    <div class="rb-command"><span class="rb-command-label">Terminal</span>sudo zypper install git cmake ninja libasound2 libpulse-devel openal-soft-devel glew-devel zlib-devel libedit-devel vulkan-devel libudev-devel libqt6-qtbase-devel libqt6-qtmultimedia-devel libqt6-qtsvg-devel libQt6Gui-private-headers-devel libevdev-devel libsndio7_1 libjack-devel</div>
</section>

<section class="rb-card">
    <h3>بناء وتشغيل RPCS3 على Linux</h3>

    <div class="rb-command"><span class="rb-command-label">من جذر مستودع RPCS3</span>cmake -B build -G Ninja

cmake –build build ./build/bin/rpcs3

    <p>
        لاستخدام Clang بدل المترجم الافتراضي:
    </p>

    <div class="rb-command"><span class="rb-command-label">اختيار Clang</span>CC=clang CXX=clang++ cmake -B build -G Ninja

cmake –build build

    <h4>البناء على ARM</h4>

    <div class="rb-command"><span class="rb-command-label">لتجنب بعض أخطاء NEON</span>cmake -B build -G Ninja -DUSE_NATIVE_INSTRUCTIONS=OFF

cmake –build build

    <div class="rb-info">
        عند استخدام GDB، يوصي الدليل بجعل المصحح يتجاهل إشارة
        <span class="rb-code">SIGSEGV</span> المستخدمة داخليًا:
    </div>

    <div class="rb-command"><span class="rb-command-label">داخل GDB</span>handle SIGSEGV nostop noprint</div>
</section>

<section class="rb-card">
    <h3>أهم خيارات CMake</h3>

    <p>
        الخيارات تتغير مع تطوير المشروع، لذلك راجع
        <span class="rb-code">CMakeLists.txt</span> قبل اعتماد أي قيمة في سكربت ثابت.
    </p>

    <div class="rb-table-wrap">
        <table>
            <thead>
                <tr>
                    <th>الخيار</th>
                    <th>وظيفته</th>
                </tr>
            </thead>
            <tbody>
                <tr><td>-DUSE_NATIVE_INSTRUCTIONS=</td><td>يبني باستخدام تعليمات المعالج المحلي. مناسب للبناء الشخصي، لكنه غير مناسب للحزم العامة.</td></tr>
                <tr><td>-DWITH_LLVM=</td><td>تفعيل بناء RPCS3 مع LLVM.</td></tr>
                <tr><td>-DBUILD_LLVM_SUBMODULE=</td><td>استخدام أو بناء LLVM الموجود ضمن Submodule الخاص بالمشروع.</td></tr>
                <tr><td>-DUSE_ALSA=</td><td>تفعيل واجهة ALSA الصوتية على Linux.</td></tr>
                <tr><td>-DUSE_PULSE=</td><td>تفعيل PulseAudio.</td></tr>
                <tr><td>-DUSE_DISCORD_RPC=</td><td>تفعيل Discord Rich Presence.</td></tr>
                <tr><td>-DUSE_VULKAN=</td><td>تفعيل دعم Vulkan.</td></tr>
                <tr><td>-DUSE_SYSTEM_ZLIB=</td><td>استخدام ZLIB من النظام بدل النسخة المضمنة.</td></tr>
                <tr><td>-DUSE_SYSTEM_LIBPNG=</td><td>استخدام libpng من النظام؛ قد يساعد في تعارض الإصدارات أو الأيقونات السوداء.</td></tr>
                <tr><td>-DUSE_SYSTEM_FFMPEG=</td><td>استخدام FFmpeg من النظام بدل النسخة المعدلة المضمنة.</td></tr>
                <tr><td>-DENABLE_AMD_EXTENSIONS=</td><td>تفعيل امتدادات AMD الخاصة.</td></tr>
                <tr><td>-DENABLE_NV_EXTENSIONS=</td><td>تفعيل امتدادات Nvidia الخاصة.</td></tr>
            </tbody>
        </table>
    </div>

    <div class="rb-warning">
        لا تنسخ خيارات من أدلة قديمة بدون مراجعة. الخيار ممكن ينحذف أو يتغير
        اسمه أو تتغير قيمته الافتراضية في أي تحديث.
    </div>
</section>

<section class="rb-card">
    <h3>وش وضع macOS وMSYS2؟</h3>

    <div class="rb-danger">
        أوامر macOS القديمة اللي تعتمد Rosetta وHomebrew x64 وQt 6.6.3،
        وتعليمات MSYS2 المبنية على Qt5 وPython 2، تعتبر مسارات قديمة وغير
        مدعومة رسميًا حاليًا. لا تستخدمها كدليل رئيسي للبناء.
    </div>

    <p>
        المشروع يقبل مساهمات تساعد المنصات الثانية على البناء، لكن فريق التطوير
        يوضح أن الدعم الرسمي للبناء يتركز على Windows وLinux، والمنصات الثانية
        ممكن تنكسر مع تغييرات الكود أو المكتبات.
    </p>
</section>

<section class="rb-source-card">
    <h3>المصادر الرسمية</h3>

    <div class="rb-links">
        <a class="rb-link" href="https://github.com/RPCS3/rpcs3/blob/master/BUILDING.md" rel="noopener noreferrer" target="_blank">
            دليل BUILDING.md الحالي
        </a>

        <a class="rb-link" href="https://github.com/RPCS3/rpcs3" rel="noopener noreferrer" target="_blank">
            مستودع RPCS3 الرسمي
        </a>

        <a class="rb-link" href="https://github.com/RPCS3/rpcs3/blob/master/CMakeLists.txt" rel="noopener noreferrer" target="_blank">
            خيارات CMake الحالية
        </a>

        <a class="rb-link" href="https://visualstudio.microsoft.com/" rel="noopener noreferrer" target="_blank">
            Visual Studio الرسمي
        </a>

        <a class="rb-link" href="https://cmake.org/download/" rel="noopener noreferrer" target="_blank">
            تنزيل CMake
        </a>

        <a class="rb-link" href="https://www.python.org/downloads/" rel="noopener noreferrer" target="_blank">
            تنزيل Python
        </a>

        <a class="rb-link" href="https://www.qt.io/download-qt-installer" rel="noopener noreferrer" target="_blank">
            تنزيل Qt
        </a>

        <a class="rb-link" href="https://vulkan.lunarg.com/sdk/home" rel="noopener noreferrer" target="_blank">
            Vulkan SDK من LunarG
        </a>

        <a class="rb-link" href="https://github.com/libsdl-org/SDL/releases" rel="noopener noreferrer" target="_blank">
            إصدارات SDL3
        </a>

        <a class="rb-link" href="https://wiki.rpcs3.net/index.php?title=Building" rel="noopener noreferrer" target="_blank">
            صفحة المنصات الأخرى
        </a>

        <a class="rb-link" href="https://rpcs3.net/download" rel="noopener noreferrer" target="_blank">
            النسخ الجاهزة للمستخدمين
        </a>

        <a class="rb-link" href="https://discord.gg/rpcs3" rel="noopener noreferrer" target="_blank">
            Discord الرسمي للمشروع
        </a>
    </div>
</section>

<footer class="rb-footer">
    <p>
        ابدأ من BUILDING.md الموجود في نفس Commit اللي بتبنيه، لأن إصدارات
        Qt وVulkan وCMake وخيارات البناء تتغير مع تحديث المشروع.
    </p>
</footer>