DMD(1) The D Language Foundation DMD(1)

dmd - کامپایلر زبان دی ۲ (Digital Mars D2.x)

dmd [فایل‌ها...] [گزینه‌ها...]

dmd کدهای منبع نوشته‌شده به زبان برنامه‌نویسی دی (D) را کامپایل می‌کند.

فایل‌های منبع D برای کامپایل
فایل‌های رابط D (فایل‌های هدر D)
فایل‌های شیء (Object) برای پیوند دادن
فایل‌های کتابخانه برای پیوند دادن
@cmdfile
فایلی برای خواندن آرگومان‌های خط فرمان بیشتر از آن، که می‌تواند شامل کامنت‌های تک‌خطی با # باشد
تولید کد برای تمام نمونه‌سازی‌های قالب (Template Instantiations)
عدم تولید برخی از اطلاعات زمان اجرا (Runtime) و توابع کمکی
بررسی محدوده آرایه‌ها: فعال (on)، فقط در توابع @safe (safeonly)، یا غیرفعال (off)
فقط کامپایل، بدون پیوند دادن (Link)
فعال یا غیرفعال کردن بررسی‌های خاص
نمایش اطلاعات درباره تمام بررسی‌های موجود
رفتار در صورت شکست assert/boundscheck/finalswitch
نمایش اطلاعات درباره تمام اقدامات بررسی موجود
روشن کردن خروجی رنگی ترمینال
اجبار به روشن یا خاموش بودن خروجی رنگی، یا فقط زمانی که خروجی تغییر مسیر نیافته است (پیش‌فرض)
استفاده از فایل پیکربندی در filename
بررسی پوشش کد (Code Coverage) و تولید فایل `.lst`
گنجاندن کدهای اجرا شده در طول CTFE در گزارش پوشش کد
الزام حداقل nnn% پوشش کد
استفاده از filename به عنوان نام پیش‌پردازنده C برای فایل‌های ImportC
تولید مستندات
نوشتن فایل مستندات در directory
نوشتن فایل مستندات در filename
اجازه دادن به ویژگی‌ها و نمادهای منسوخ‌شده (Deprecated) بدون نمایش پیام
صدور خطا هنگام استفاده از ویژگی‌ها یا نمادهای منسوخ‌شده (توقف کامپایل)
صدور پیام هشدار هنگام استفاده از ویژگی‌ها یا نمادهای منسوخ‌شده (پیش‌فرض)
کامپایل کدهای دیباگ
کامپایل کدهای دیباگ مشخص‌شده با شناسه ident
تنظیم کتابخانه دیباگ نمادین روی libname
تنظیم کتابخانه پیش‌فرض روی libname
چاپ وابستگی‌های ماژول (imports/file/version/debug/lib)
نوشتن وابستگی‌های ماژول در filename (فقط importها)
مخصوص ویندوز: انتخاب نمادها برای dllimport
تنظیم ویرایش زبان به سال NNNN، اعمال روی filename
تنظیم سازگاری مَنگلینگ نام ++C با استاندارد standard
فهرست کردن تمام استانداردهای پشتیبانی‌شده
تولید کد ردیابی شاخه غیرمستقیم (Indirect Branch Tracking)
تولید کد مستقل از موقعیت (Position Independent Code)
تولید فایل‌های اجرایی مستقل از موقعیت (Position Independent Executables)
فعال کردن پروفایلر زمان کامپایل، تولید فایل JSON حاوی نتایج
حداقل دقت زمانی (به میکروثانیه) ردیابی‌شده توسط پروفایلر زمان (پیش‌فرض: 500)
مشخص کردن فایل خروجی برای `-ftime-trace`
افزودن اطلاعات دیباگ نمادین
افزودن اطلاعات دیباگ نمادین DWARF (پیش‌فرض: 3)
تولید اطلاعات دیباگ برای تمام انواع ارجاع‌داده‌شده
همیشه فریم پشته (Stack Frame) تولید شود
افزودن کد محافظتی پشته (Stack Stomp)
تولید فایل هدر D
نوشتن فایل هدر در directory
نوشتن فایل هدر در filename
نوشتن معادل هدر ++C در خروجی استاندارد (stdout)
فهرست کردن گزینه‌های موجود برای تولید فایل هدر ++C
نوشتن فایل هدر ++C در directory
نوشتن فایل هدر ++C در filename به جای stdout
چاپ راهنما و خروج
جستجوی ماژول‌های وارداتی (import) در directory
جستجوی فایل‌های وارداتی خارج از باینری در حال کامپایل، جهت تنظیم ماژول به عنوان DllImport
گنجاندن ماژول‌های وارداتی (import) در کامپایل
مشخص کردن جدول‌های غیر اسکی (non-ASCII) برای شناسه‌های D
مشخص کردن جدول‌های غیر اسکی برای شناسه‌های ImportC
گزینه منسوخ‌شده؛ پراگماهای پشتیبانی‌نشده اکنون همیشه نادیده گرفته می‌شوند
درون‌خطی‌سازی توابع (Inlining)
جستجوی فایل‌های وارداتی متنی (String Imports) در directory
ارسال linkerflag به پیونددهنده (Linker)
تولید فایل کتابخانه به جای فایل‌های شیء (Object)
فعال‌سازی زباله‌روب (Garbage Collector) برای خود کامپایلر
تولید کد ۳۲ بیتی
تولید کد ۶۴ بیتی
افزودن تابع پیش‌فرض ()main در صورت عدم وجود (مثلاً برای تست واحد)
چاپ وابستگی‌ها در قالب سازگار با Makefile در filename یا stdout
باز کردن صفحه راهنما در مرورگر وب
تولید فایل .map پیونددهنده
تنظیم معماری هدف برای تولید کد
فهرست کردن تمام گزینه‌های معماری
گسترش و ذخیره mixinها در فایل مشخص‌شده توسط filename
استفاده از filespec به عنوان فایل منبع برای package.module
عدم بررسی محدوده آرایه‌ها (منسوخ‌شده، از `-boundscheck=off` استفاده کنید)
فرض اینکه هیچ استثنایی (Exception) پرتاب نخواهد شد
اجازه به نادیده گرفتن تخریب‌کننده‌ها (Destructors) هنگام بازپیچش پشته ناشی از Error در توابع nothrow
بهینه‌سازی کد
عدم نوشتن فایل شیء (Object)
نوشتن فایل‌های شیء و کتابخانه در directory
نام‌گذاری فایل خروجی به filename
حفظ مسیر منبع برای فایل‌های خروجی
نوشتن فایل‌های شیء با نام‌های کاملاً واجد شرایط (Fully Qualified)
تنظیم سیستم‌عامل هدف روی os
ارسال preprocessorflag به پیش‌پردازنده C
فعال‌سازی ویژگی زبانی آینده مشخص‌شده با name
فهرست کردن تمام ویژگی‌های زبانی آینده
پروفایل کردن کارایی زمان اجرای کد تولیدشده
پروفایل کردن تخصیص‌های حافظه زمان اجرا
عدم صدور قراردادها (Contracts) و assertها، و اجرای بررسی محدوده آرایه‌ها فقط در توابع @safe
بازگردانی تغییر زبانی مشخص‌شده با name
فهرست کردن تمام تغییرات زبانی قابل بازگردانی
کامپایل، پیوند و اجرای برنامه srcfile
تولید کتابخانه مشترک (Shared Library / DLL)
استفاده از triple به عنوان arch-[vendor-]os[-cenv[-<cppenv]]
راهنمایی برای تغییر زبانی مشخص‌شده با name
فهرست کردن تمام تغییرات زبانی
کامپایل کدهای تست واحد (Unit Tests)
نمایش با جزئیات کامل (Verbose)
فهرست کردن اسمبلی تولیدشده برای هر تابع
چاپ شماره ستون‌ها (کاراکترها) در پیام‌های عیب‌یابی
تنظیم شیوه نمایش شماره فایل/سطر در پیام‌های کامپایلر
محدود کردن تعداد پیام‌های تکمیلی برای هر خطا (۰ یعنی نامحدود)
محدود کردن تعداد پیام‌های خطا/منسوخ‌شدگی (۰ یعنی نامحدود)
تنظیم میزان پرحرفی پیام‌های خطا
نمایش خطاهای ناشی از کامپایل‌های گمانه‌زنی (Speculative) مانند `__traits(compiles, ...)`
چاپ نسخه کامپایلر و خروج
کامپایل کدهای نسخه مشخص‌شده با شناسه ident
فهرست کردن تمام تخصیص‌های زباله‌روب از جمله موارد پنهان
میزان نمایانی پیش‌فرض نمادها
فهرست کردن تمام متغیرهایی که در حافظه محلی رشته (Thread Local Storage) قرار می‌گیرند
نمایش آمار مربوط به نمونه‌سازی قالب‌ها
در نظر گرفتن هشدارها به عنوان خطا (توقف کامپایل)
نمایش هشدارها به صورت پیام‌های اطلاع‌رسانی (ادامه کامپایل)
هشدار درباره استفاده از قابلیت‌های منسوخ‌شده و قدیمی (ادامه کامپایل)
تولید فایل JSON
نوشتن فایل JSON در filename
ارسال driverflag به راه‌انداز پیونددهنده (cc)

تغییرات زبانی فهرست‌شده با -transition=id:

فهرست کردن تمام فیلدهای تغییرناپذیر که یک نمونه شیء را اشغال می‌کنند
نمایش پیام‌های منسوخ‌شدگی برای تمام موارد استفاده از انواع مختلط (Complex) یا موهومی (Imaginary)
فهرست کردن تمام متغیرهایی که در حافظه محلی رشته قرار می‌گیرند
فهرست کردن تمام موارد استفاده از 'in' روی پارامترها

عملیات پیوند دادن پس از یک کامپایل موفق مستقیماً توسط کامپایلر dmd انجام می‌شود. برای جلوگیری از اجرای پیونددهنده توسط dmd، از گزینه -c استفاده کنید.

پیوند دادن واقعی با اجرای gcc انجام می‌شود. این کار سازگاری با ماژول‌های کامپایل‌شده با gcc را تضمین می‌کند.

/etc/dmd.conf
فایل پیکربندی سراسری dmd در سیستم. برای جزئیات به dmd.conf(5) مراجعه کنید.

کامپایلر زبان دی dmd از متغیرهای محیطی زیر استفاده می‌کند:

مقدار متغیر DFLAGS به‌گونه‌ای تفسیر می‌شود که گویی در خط فرمان به dmd پیوست شده است.

حق نشر (c) ۱۹۹۹-۲۰۲۶ توسط بنیاد زبان دی (The D Language Foundation)، نوشته شده توسط والتر برایت (Walter Bright).

https://dlang.org/dmd.html

dmd.conf(5) rdmd(1) dumpobj(1) obj2asm(1) gcc(1)

2026-08-30 The D Language Foundation