Thread overview
dmd seçenekleri
Mar 04, 2019
cos00kun
Jan 29, 2020
Salih Dinçer
Feb 23, 2020
cos00kun
March 04, 2019

Ali Hocam size nasıl teşekkür edeceğim bilmiyorum ki :-)
Not: Bence D Kitabına bunu da olduğu gibi koymalıyız! :blush:

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 04, 2019

Çoğu komut satırı programında olduğu gibi, dmd'nin de çok sayıda seçeneği var. Normalde hiçbirisini kullanmak gerekmiyor çünkü 'deneme.d' diye bir dosyam varsa kısaca
'
dmd deneme.d
'
yazmak deneme (veya deneme.EXE) isimli programı oluşturmak için yeterli oluyor.

Buna rağmen, dmd 2.085'in seçenekleri çok kısaca şöyle:

  • ** @<cmdfile**> Seçekleri cmdfile isimli dosyadan oku (sanki komut satırında yazılmışlar gibi)
  • ** -allinst** Bütün şablon kullanımları için kod üret (normalde otomatik olarak halledilir)n
  • ** -betterC** D runtime'ı iptal et
  • ** -boundscheck=[on|safeonly|off]** Dizi indeks hatalarını yakala (on), yalnızca @safe kod içinde yakala; denetimi iptal et (off)
  • ** -c** Yalnızca derle, programı oluşturma (bağlama)
  • ** -check=[assert|bounds|in|invariant|out|switch|h|help|?][=[on|off]]** Belirtilen denetimleri etkinleştir veya iptal et
  • ** -checkaction=[D|C|halt|context|h|help|?]** Denetim başarısız olduğunda ne olacağını belirle
  • ** -color** Ekran çıktısını renklendir
  • ** -color=[on|off|auto]** Renkli ekran çıktısını etkinleştir, iptal et, veya duruma göre akıllı davran (bir dosyaya yönlendirilmişse renk kodları kullanma)
  • ** -conf=** Ayar dosyası olarak bunu kullan (kullanılan ayar dosyası 'dmd --help' yazıldığında görülür)
  • ** -cov** İşletilen kod satırlarını göster
  • ** -cov=** Yüzde nnn kod satırının işletildiğini denetle
  • ** -D** Kod belgesi oluştur
  • ** -Dd** Belgeyi bu klasöre koy
  • ** -Df** Belgeyi bu dosyaya yaz
  • ** -d** Emekliye ayrılmış olan olanakların kullanılmasına izin ver
  • ** -dw** Emekliye ayrılmış olan olanak kullanılmışsa bildir
  • ** -de** Emekliye ayrılmış olan olanak kullanılmışsa hatayla sonlan
  • ** -debug** 'debug' olarak işaretlenmiş kodları programa dahil et
  • ** -debug=** 'debug' olarak işaretlenmiş kodların 'level'a eşit veya düşük olanlarını dahil et
  • ** -debug=** 'ident' olarak isimlendirilmiş olan 'debug' kodlarını dahil et
  • ** -debuglib=** (Bunu bilmiyorum) set symbolic debug library to name
  • ** -defaultlib=** (Sanırım phobos yerine başka kütüphane kullanılmasıyla ilgili) set default library to name
  • ** -deps** Modül bağımlılıklarını bildir
  • ** -deps=** Bağımlılık bilgisini bu dosyaya yaz (yalnızca 'import' bağımlıklarını)
  • ** -extern-std=[|h|help|?]** C++ işlev vs. kullanımlarında varsayılan name mangling'i belirle
  • ** -fPIC** Kodun bellekte herhangi bir yerde işletilebilmesini sağla (dinamik kütüphanelerle ilgili)
  • ** -g** Hata giderme işlemlerinde yararlanılan symbolic debug info bilgisini dahil et
  • ** -gf** Hata giderme bilgisini bahsi geçen bütün türler için oluştur
  • ** -gs** İşlev çağrı yığıtını her zaman için yazdır (sanırım hata gidermeyle ilgili)
  • ** -gx** (Sanırım hata ayıklamaya yardımcı olsun diye çağrı yığıtının üzerine yazıldığını denetle) add stack stomp code
  • ** -H** Başlık dosyası oluştur
  • ** -Hd=** Başlık dosyasını bu klasöre yaz
  • ** -Hf=** Başlık dosyasını bu dosyaya yaz
  • ** --help** Bütün seçenekleri göster
  • ** -I=** import edilen modüller için bu klasöre de bak
  • ** -i[=]** import edilen modülleri programa dahil et (aksi taktirde, her modülün ayrıca komut satırında da bildirilmesi gerekir)
  • ** -ignore** Bilinmeyeen 'pragma'ları gözardı et
  • ** -inline** İşlevi çağırmak yerine kodunu çağrıldığı yere göm
  • ** -J=** 'import (bir_dosya)' deyimlerinde geçen dosyanın aranacağı klasörü belirt
  • ** -L=** Bu seçeneği bağlayıcıya geçir
  • ** -lib** Kütüphane oluştur
  • ** -m32** 32 bitlik kod üret
  • ** -m64** 64 bitlik kod üret
  • ** -main** Boş bir main() işlevi ekle (kütüphanelerin birim testlerinde yararlı oluyor)
  • ** -man** Derleyici belgesini tarayıcıda aç
  • ** -map** Bağlayıcı .map dosyası oluştur
  • ** -mcpu=** 'id' ile belirtilen mimari için kod üret
  • ** -mcpu=[h|help|?]** Mimari seçeneklerini göster
  • ** -mixin=** mixin açılımlarını bu dosyaya yaz
  • ** -mv=<package.module>=** (Bilmiyorum) ile belirlenen dosyayı <package.module> için kullan (?)
  • ** -noboundscheck** Emekliye ayrıldı; -boundscheck=off kullanın
  • ** -O** Eniyileştirme yöntemleri uygula
  • ** -o-** .o (veya .obj) dosyalarını oluşturma
  • ** -od=** .o ve kütüphane dosyalarını bu klasöre yaz
  • ** -of=** Oluşturulan programın adı bu olsun
  • ** -op** Oluşturulan dosya yolları kaynaklarındaki dosya yollarını içersin
  • ** -preview=** Henüz dile eklenmemiş olan 'id' isimli olanağı etkinleştir
  • ** -preview=?** Bu seçenekleri listele
  • ** -profile** Üretilen programa, hızını ölçecek yardımcı kodlar ekle
  • ** -profile=gc** Çöp toplayıcının ayırdığı bellekle ilgili bilgi ver
  • ** -release** Programın son kullanıcı için hedeflenen sürümünü oluştur
  • ** -revert=** (Bilmiyorum) 'id' ile belirlenen dil olanağını tersine çevir
  • ** -revert=?** Bu seçenekleri listele
  • ** -run ** Belirtilen dosyayı derle, bağla, ve işlet
  • ** -shared** Dinamik kütüphane (DLL) oluştur
  • ** -transition=** 'id' ile belirtilen dil olanağına geçiş konusunda yardım et
  • ** -transition=[h|help|?]** Bu seçenekleri listele
  • ** -unittest** Birim testlerini programa dahil et
  • ** -v** İşlem adımlarında fazladan bilgi ver
  • ** -vcolumns** Hata mesajları satırdaki konumu da içersin
  • ** -verrors=** Derlemeyi bu kadar hata bulunca durdur
  • ** -verrors=spec** __traits(compiles,...) gibi "iç derleme" adımlarındaki hataları da göster
  • ** -verrors=context** (Yeni bir olanak) Hata mesajı daha yardımcı olsun :)
  • ** --version** Derleyici sürümünü söyle
  • ** -version=** 'version' olarak işaretlenmiş kodların 'level'a eşit veya yüksek olanlarını dahil et
  • ** -version=** 'ident' olarak isimlendirilmiş olan 'version' kodlarını dahil et
  • ** -vgc** Gizli olanlar dahil, çöp toplayıcının ayırdığı bellekleri bildir
  • ** -vtls** İş parçacığına özel değişkenleri (thread local variable) listele
  • ** -w** Uyarıları hata kabul et; derlemeyi sonlandır
  • ** -wi** Uyarıları göster; derlemeyi sürdür
  • ** -X** JSON dosyası üret
  • ** -Xf=** JSON dosyasını bu dosyaya yaz

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 29, 2020

Özellikle -verrors çok işe yarıyor...

Bu arada bunları örneklendirerek başlığın değerini arttırabiliriz. Mesela sık kullan -L parametresiyle bağlayıcıya kütüphaneyi bildiriyoruz. Eğer programınızda harici kaynaktan işlevler varsa ve eğer parametreyi doğru kullanmazsanız derlenmeyecektir. Mesela hatırladıklarım:

  • dmd program.d -L+gtkd.lib

Var ve SDL için de sanırım -L-lSDL diyorduk.

Buradaki +/-'nin ne anlama geldiğini ben de bilmiyorum. Sanırım bayrak gibi bir şey. Bu arada Windows ortamında tırnak kullanmak gerekebilir:

  • dmd program.d -L"+gtkd.lib"

Bilginize...

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 23, 2020

Ali Hocam konu başlığında şu komutları da ilave ederseniz güncel şekilde kaynak olmaya devam edecektir
-lowmem
-m32mscoff
-mscrtlib=

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

February 23, 2020

Öncelikle, dmd'nin Linux ve Windows üzerinde işleyen sürümlerinin belgeleri şurada:

https://dlang.org/dmd-linux.html

https://dlang.org/dmd-windows.html

-lowmem: Derleme işlemi tek seferlik olduğundan, dmd kullandığı belleği işi bittikçe geri vermez çünkü program sonlandığında işletim sistemi programlara ait olan kaynakları otomatik olarak geri alır. Bellek temizliği işiyle uğraşmadığından dmd biraz daha hızlı işler ve herhalde "geri verilmiş olan belleğin yanlışlıkla tekrar kullanılması" gibi bir hataya düşmemiş olur.

dmd'nin bu hovardalığı büyük modüllerde sorun oluşturmaya başlayınca dmd de çöp toplayıcı kullanmaya başladı. Çöp toplayıcı kullanması, "az bellek kullan" anlamını veren "low memory" seçeneği ile sağlanıyor.

-m32mscoff: Yalnızca Widows ortamında bulunan ve "32 bit kod üret ve Microsoft'un COFF düzeninde program parçası (object file) oluştur" seçeneği.

-mscrtlib: Yine yalnızca Windows ortamı için; C çalışma ortamı (runtime) kütüphanesinin otomatik olarak bağlanmasını sağlayan ve hangi kütühpanenin kullanılacağını belirleyen seçenek.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]