Skip to content

Latest commit

 

History

History
166 lines (109 loc) · 5.79 KB

local-dev.md

File metadata and controls

166 lines (109 loc) · 5.79 KB

اللغات: English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Français | Deutsch | Español | Italiano | Русский | العربية

→ فهرس التوثيق

التطوير المحلي

دليل لبناء NeverC من الكود المصدري وإعداد بيئة تطوير محلية.


المتطلبات الأساسية

  • CMake 3.20+
  • Ninja
  • مُترجم C++17 مُضيف (GCC أو Clang أو MSVC)

البناء

cmake -S llvm -B build-neverc -G Ninja -C neverc/cmake/caches/NeverC.cmake
cmake --build build-neverc --target neverc

يتم اكتشاف ccache / sccache وتفعيلهما تلقائيًا إن وُجدا.

--target neverc هو بناء stage-1 اليومي (الـ runtime المضمّنة فارغة) ويكفي لمعظم العمل المحلي. لتضمين string / mimalloc / std / NVK داخل الثنائي نفسه (أو محاذاة CI)، شغّل هدف المظلة stage-2:

cmake --build build-neverc --target neverc-embed-runtime-bitcode

تفاصيل الإقلاع على مرحلتين في Builtins.

البناء مع الاختبارات

cmake -S llvm -B build-neverc -G Ninja -C neverc/cmake/caches/NeverC.cmake -DNEVERC_INCLUDE_TESTS=ON
cmake --build build-neverc --target check-neverc

يعتمد check-neverc على neverc-embed-runtime-bitcode، لذا يُنفَّذ الإقلاع وإعادة الربط تلقائيًا قبل أول تشغيل للاختبارات. لا حاجة لاستدعاء هدف embed يدويًا.


إعداد PATH (macOS / Linux)

بعد البناء، يكون الملف التنفيذي neverc في build-neverc/bin/neverc. استخدم النص البرمجي المساعد لإضافته إلى PATH بدلاً من كتابة المسار الكامل كل مرة:

source ./utils/build/neverc-env.sh

الآن يمكنك تشغيل neverc مباشرةً:

neverc --version
neverc -c hello.c -o hello.o

الإزالة من PATH

لإزالة النسخة المحلية من PATH في جلسة الصَّدفة الحالية:

source ./utils/build/neverc-env.sh --remove   # أو -r

إعداد دائم

كتابة سطر source تلقائيًا في ملف rc الخاص بالصَّدفة (~/.zshrc أو ~/.bashrc أو ~/.profile):

source ./utils/build/neverc-env.sh --install

للتراجع:

source ./utils/build/neverc-env.sh --uninstall

التبديل بين التطوير المحلي وإصدار release

إذا كان لديك تثبيت release (افتراضيًا: ~/.neverc) وبناء داخل شجرة المصدر، استخدم neverc-env.sh للتبديل بين neverc النشط في جلسة الصَّدفة الحالية دون الكتابة فوق أي تثبيت:

source ./utils/build/neverc-env.sh              # التطوير المحلي (build-neverc/bin)
source ./utils/build/neverc-env.sh --local      # كما أعلاه
source ./utils/build/neverc-env.sh --release    # إصدار release (~/.neverc/bin)
source ./utils/build/neverc-env.sh --status     # عرض neverc النشط
source ./utils/build/neverc-env.sh --remove     # إزالة كليهما من PATH

بعد التبديل يُضبط NEVERC_ENV على local أو release:

echo "$NEVERC_ENV"
neverc --version
which neverc

إذا ثُبّت release في prefix آخر، حدّد نفس المجلد المستخدم مع install.sh:

NEVERC_INSTALL_DIR=$HOME/.neverc-v3389.1.2 source ./utils/build/neverc-env.sh --release

اختياري — أسماء مستعارة في إعداد الصَّدفة (استبدل المسار بالمسار المطلق لمستودعك):

alias neverc-dev='source /path/to/NeverC/utils/build/neverc-env.sh --local'
alias neverc-rel='source /path/to/NeverC/utils/build/neverc-env.sh --release'

Windows (CMD)

على Windows، استخدم النص البرمجي .bat (لا يحتاج صلاحيات مسؤول):

utils\build\neverc-env.bat             &REM إضافة إلى PATH (الجلسة الحالية)
utils\build\neverc-env.bat --remove    &REM إزالة من PATH (الجلسة الحالية)
utils\build\neverc-env.bat --global    &REM حفظ في PATH المستخدم عبر setx
utils\build\neverc-env.bat --global -r &REM إزالة من PATH المستخدم عبر setx

على عكس نص Unix البرمجي، لا حاجة لـ source — ملف .bat يعدّل جلسة cmd الحالية مباشرةً. يكتب --global في سجل المستخدم عبر setx (لا يحتاج صلاحيات مسؤول).


ملفات macOS التنفيذية الجاهزة

الإصدار موقَّع بشهادة Apple Developer ID ومُوثَّق من Apple. فُكَّ ضغط الأرشيف واستخدمه مباشرةً.


التجميع المتقاطع إلى Windows

يتضمن NeverC حزم SDK لكل منصة في runtime/ (Windows SDK/WDK، Linux sysroot، macOS sysroot، Android NDK)؛ لا حاجة لإعداد خارجي.

neverc --target=x86_64-pc-windows-msvc \
  -fbuiltin-string -o hello.exe hello.c -lkernel32

لمزيد من المعلومات حول dyncode لـ Windows (-fdyncode، تحليل استيراد PEB، إلخ)، راجع وثائق مُجمِّع dyncode.


التحقق

neverc --version
echo 'int main(void) { return 0; }' > /tmp/hello.c
neverc -c /tmp/hello.c -o /tmp/hello.o