Merhaba,
Code::Block üzerinden proje geliştirmeye çalıştım fakat ayarlarını bir türlü yapamadım. Bende metin editörü üzerinden yazmaya devam ediyorum. İşte burda sorun beliriyor. O anki veriyi kaydetip, derleyip, çalıştırmak zor geliyor. Bunun yerine D dilini kullanarak bir proje yönetici yapmayı düşünüyorum. Şuan ufak ufak denemelere başladım. Şuanki kod durumu;
Düzeltme: Hataları düzelterek ekliyorum.
Düzeltme 2 : Şuan dosya derleyip çalıştırabiliyor. :)
import std.stream;
import std.cstream;
import std.array;
import std.file;
import std.process;
import std.string;
string parametre;
void main(string[] args){
/*
* Örnek kullanım : derle -a -w -d deneme.d
* -a = Argümanlar. Kullanımı -a -w -p derle
* -Y = Yeni proje oluşturur. Kullanımı -Y derle
* -Yd = Yeni Dosya oluşturur. Kullanımı -Yd dcurses.d
*/
parametre ~="dmd";
switch (args[1]) {
case "-a":
Derle(args);
break;
case "-Y":
ProjeOluştur(args[2]);
break;
case "-Yd":
DosyaOluştur(args[2],args[3]);
break;
default:
dout.writefln("-a = Argümanlar. Kullanımı:derle -a -w -L... -p proje");
dout.writefln("-Y = Yeni proje oluşturur. Kullanımı:derle -Y proje");
dout.writefln("-Yd = Yeni Dosya oluşturur. Kullanımı: derle -Yd proje.d");
}
}
void Derle(string[] args){
/*
* -p = Projeyi derler. Kullanımı : derle -a -w -p proje
* -d = Dosyayı derler. Kullanımı : derle -a -w -d proje.d
*/
for(int k=0;k<args.length; k++){
if(args[k]=="-p"){
for(int i = 2;i<k;i++){
parametre~=" "~args[i];
}
ProjeDerle(args[k+1]);
}else if(args[k]=="-d"){
for(int i = 2;i<k;i++){
parametre~=" "~args[i];
}
DosyaDerle(args[k+1]);
}
}
}
void ProjeDerle(string pAdi){
if(exists(pAdi)){
dout.writefln(pAdi~" adlı dizin var");
}else{
dout.writefln(pAdi~" adlı dizin yok");
}
}
void ProjeOluştur(string pAdi){
string projeDizini = getcwd()~"/"~pAdi;
mkdir(projeDizini);
File dosya = new File(projeDizini~"/main.d",FileMode.OutNew);
dosya.writefln("import std.stdio;");
dosya.writefln("void main(){");
dosya.writefln(" writefln('Merhaba');");
dosya.writefln("}");
File index = new File(projeDizini~"/index.txt",FileMode.OutNew);
index.writefln("argümanlar: ");
index.writefln("derle: main.d");
}
void DosyaDerle(string dAdi){
parametre~=" "~dAdi;
system(parametre);
string çalıştır = replace(dAdi,".d","");
system("./"~çalıştır);
}
void DosyaOluştur(string dAdi,string pAdi){
string projeDizini = getcwd()~"/"~pAdi;
File dosya = new File(projeDizini~"/"~dAdi,FileMode.OutNew);
dosya.writefln("class "~dAdi~"{");
dosya.writefln("}");
File index = new File(projeDizini~"/"~"index.txt",FileMode.Append);
index.writefln("sınıf: "~dAdi);
}
derle.d ye parametre gönderek hem derleyip hemde uygulamayı çalıştıracak.
Çalışma mantığı şu şekil olacak;
- Proje yaratmak için derle -Y projeAdı
1-1) projeAdı dğerindeki dizini oluşturak içerisine index.txt dosyasını yazacak.
1-2) Yeni ana dosya yaratmak için derle -Yad dosya projeAdı
1-3) projeAdı değerindeki dizine ait index.txt e belirtilen dosyayı ekleyecek.
1-4) Yeni dosya yaratmak için derle -Yd dosya projeAdı
1-5) projeAdı değerindeki dizinin içerisine dosyayı oluşturacak. - Proje derlemek için derle -a -w -L-lncurses -p projeAdı
2-1) -a = Argüman. Projeyi derlemek için gerekli argümanların verilmesi için gerekli parametre.
2-2) -p = Proje olduğunu belirden argüman - Dosya derlemek için derle -a -w -L-lncurses -D dosya.d
Bence çok faydalı olucak :). Hem ilerde qtd ve gtkd sorunsuz kurulduğunda arayüzünüde yapabiliriz. Ve IDE olarak bir başlangıç yapmış oluruz. IDE nin küçük bir parçası olmasına rağmen çok yardımcı olacağına inanıyorum :)
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]