Thread overview
Basit dub kullanımı
Mar 04, 2019
cos00kun
March 04, 2019

Her şey çok net teşekkürler :)
peki diyelimki bir glut kütüphanesini de projeme dahil etseydim bu durumda json veya sdl (sdl daha basit yazım kurallarına sahip bence) dosyasına neler yazacaktım ? dependencies komutu ile nasıl bu ekelmeler yapılıyor tam olarak ?

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

March 03, 2019

Bu adımları Linux için denedim ama herhalde Windows cmd satırında da aynıdır.

  1. Programı içerecek olan bir klasör oluşturun:
    '$ mkdir dub_deneme'

  2. O klasöre geçin:
    '$ cd dub_deneme'

  3. dub'ı o klasör içinde ilkleyin. Sorduğu sorulara farklı yanıtlar verebilirsiniz ama ben hepsinde Enter'a basacağım:
    'dub_deneme $ dub init
    Package recipe format (sdl/json) [json]:
    Name [dub_deneme]:
    Description [A minimal D application.]:
    Author name [Ali Çehreli]:
    License [proprietary]:
    Copyright string [Copyright © 2019, Ali Çehreli]:
    Add dependency (leave empty to skip) []:
    Successfully created an empty project in '/home/ali/personal/deneme/d/dub_deneme'.
    Package successfully created in .'

  4. Oluşturduğu dosya ve klasörlere bakın:
    'dub_deneme $ ls -l
    total 8
    -rw-r--r-- 1 ali ali 180 Mar 3 17:20 dub.json <-- Bu programın dub seçenekleri
    drwxr-xr-x 2 ali ali 4096 Mar 3 17:20 source <-- Kaynak kodların yerleştirileceği klasör'

  5. dub, tek bir mesaj yazdıran bir main() ile geliyor. (Kaynak dosyası source/app.d) Programı oluşturun:
    'dub_deneme $ dub build
    Performing "debug" build using /usr/bin/dmd for x86_64.
    dub_deneme ~master: building configuration "application"...
    Linking...'

  6. Oluşan programın adı klasörün adıyla aynı olacak. (Daha önce Enter'a basmak yerine başka isim verebilirdik.) Bakalım:
    'dub_deneme $ ls -l
    total 932
    -rwxr-xr-x 2 ali ali 944904 Mar 3 17:21 dub_deneme <-- Oluşan program
    -rw-r--r-- 1 ali ali 180 Mar 3 17:20 dub.json
    drwxr-xr-x 2 ali ali 4096 Mar 3 17:20 source'

  7. Programı çalıştırın; bahsettiğim mesajı yazdıracak:
    'dub_deneme $ ./dub_deneme
    Edit source/app.d to start your project. <-- Yazdırılan mesaj'

  8. source/app.d'yi istediğiniz gibi değiştirerek programınızı geliştirin. Oluşturmak için hep 'dub build' yazacaksınız. Ben içerikleri aşağıdaki gibi olan a.d ve b.d modüllerini yazdım ve app.d'yi şöyle değiştirdim:
    'dub_deneme $ cat source/a.d
    module a;

int karesi(int i) {
return i * i;
}
'
'dub_deneme $ cat source/b.d
module b;

import a;

int hesapla(int i) {
return karesi(i) * 2;
}
'
'dub_deneme $ cat source/app.d
import std.stdio;
import b;

void main()
{
writeln(hesapla(5));
}'

  1. Programı oluşturun:
    'dub_deneme $ dub build
    Performing "debug" build using /usr/bin/dmd for x86_64.
    dub_deneme ~master: building configuration "application"...
    Linking...'

  2. Yeni programı çalıştırın:
    'dub_deneme $ ./dub_deneme
    50 <-- 5 * 5 * 2 hesabının sonucu
    '
    Ali

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

March 04, 2019

Projemdeki yapıları otomatik olarak json'a dönüştürmek istiyor olayım. code.dlang.org'da json diye arattıktan sonra şu pakedi beğenmiş olayım:

http://code.dlang.org/packages/painlessjson

O sayfada dub.json'a ve dub.sdl'e neler yazmam gerektiği gösteriliyor ama ben komut satırını da kullanabilirim. Öğrenmiş olmak için de aşağıdaki komutu işletmeden önce ve işlettikten sonra dub.json dosyasına bakarak nasıl değiştiğini görebilirim:
'
dub_deneme $ dub add painlessjson
Adding dependency painlessjson ~>1.3.9
'
O pakedin belirli bir sürümünde ısrar etseydim, örneğin 'painlessjson=1.3.8' de yazabilirdim. Bu işi dub'a bıraktım, o code.dlang.org'a baktı ve son sürümün 1.3.9 olduğunu öğrendi.

Programımı tekrar oluşturuyorum:
'
dub_deneme $ dub build
Fetching painlessjson 1.3.9 (getting selected version)... <-- painlessjson'un indirilmesi
Fetching painlesstraits 0.3.0 (getting selected version)... <-- Onun gerektirdiği başka bir paket
Performing "debug" build using /usr/bin/dmd for x86_64.
dunit 1.0.14: building configuration "library"...
painlesstraits 0.3.0: building configuration "unittest"...
painlessjson 1.3.9: building configuration "library"...
dub_deneme ~master: building configuration "application"...
Linking...
'
İndirdiği paketleri Linux'ta ~/.dub klasörünün altına yerleştiriyor: '/home/ali/.dub/packages/painlessjson-1.3.9'

Şimdi dub_deneme/source/app.d dosyasını değiştiriyorum:
'
dub_deneme $ cat source/app.d
import std.stdio;
import b;

import painlessjson; // <-- Kullandığım paket

struct S { // <-- Bir yapı
int i;
string s;
}

void main()
{
writeln(hesapla(5));

auto s = S(42, "merhaba"); // <-- Bir yapı nesnesi
auto j = s.toJSON; // <-- painlessjson'un kullanılması
writeln(j);
}
'
Tekrar oluşturuyorum:
'
dub_deneme $ dub build
Performing "debug" build using /usr/bin/dmd for x86_64.
dunit 1.0.14: target for configuration "library" is up to date.
painlesstraits 0.3.0: target for configuration "unittest" is up to date.
painlessjson 1.3.9: target for configuration "library" is up to date.
dub_deneme ~master: building configuration "application"...
Linking...
To force a rebuild of up-to-date targets, run again with --force.
'
Programı işletiyorum:
'
dub_deneme $ ./dub_deneme
50
{"i":42,"s":"merhaba"} // <-- S yapı nesnesinin json hali
'
Ali

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