Visual Studio 2008′e QT eklemek ve Static Derleme Mevzusu

Yazının başlığını değiştirdim, umarım daha açıklayıcı olur artık yazı.

Beni uğraştırdı ne yalan söyleyeyim! Güzelcene QT’nin kendi sitesinde QT Creator’ı indirip kullanmak (tabi SDKsı ile birlikte) gayet güzel ve basitken, işler bunu VS ile kullanmaya gelince biraz zorlaşıyor. Nette güzel hoş yazılar var konuda, ama tam olarak açıklama getirdiklerine inanmıyorum. Bu nedenle bu yazıyı yazmayı uygun gördüm…
QT’nin SDK’sını yüklediğinizi var sayıyorum. (http://www.qtsoftware.com/downloads/sdk-windows-cpp). Visual Studio 2008 zaten yüklüdür ona link bile vermeyeceğim…

Şimdi bilgisayarın normal komut satırını değil de Visual Studio 2008′in komut satırını açmamız gerekiyor ama tam olarak nerede olduğu nette yazmıyor. (Bu konuda uzman olduğumu düşünmediğimden araştırmam gerekti, ben de siz araştırmayın diye zaten yazıyorum) Direk Başlat -> Programlar -> Microsoft Visual Studio 2008 -> Visual Studio Tools altındaki Visual Studio 2008 Command Prompt ‘u çalıştırın. (İşletim sistemi diline göre Start-> All Programs filan diye değişebilir bu)

Karşınıza normal Windows Komut Satırı gibi bir pencere gelecek. Bu ayrıntıya değinme sebebim, ben sürekli Visual Studio 2008 içerisinde komut satırını kullanmaya çalıştım ve haliyle başarısız oldum. Benim gibi göremeyenler için önemli bir ayrıntı bence.

Şimdi güzelcene “cd ..” komutu ile C:’ye kadar gelin. Eğer QT SDK kurulumunda değişiklik yapmadıysanız, aradığınız klasör C:\QT\2009.04\QT olacak. (Sürüme göre 2009.xx olabilir) Klasör içindeki “configure.exe” yi kullanarak QT’yi ayarlayacağız. Komut satırına şunları yazın:

configure  -platform win32-msvc2008  -debug-and-release -static -no-sql-sqlite -no-qt3support -no-opengl  -no-libtiff -no-dbus -no-phonon -no-phonon-backend -no-webkit

İlk baştaki -platform ve sonrası zaten açık. Ardından gelen parametre, ayarların hem debug hem de release ederken geçerli olacağını belirtiyor. Peşindeki static önemli; eğer QT ile gelen kütüphanenin direk programın içine gömülmesini istiyorsanız bunu yapmalısınız. Aksi durumda program ve yanında pek çok DLL vermeniz gerekiyor kullanacak kişiye. (Ama dikkat bu şekilde 20-30kb’lık programlar rahatlıkla 5-6mb’a çıkıyor. Görsellik varsa Qt4Gui.dll kullanıyorsunuz ve bu da tek başına 10mb demektir static eklemediğinizde) Geri kalan parametreleri yazmayabilirsiniz ama özellikle static kullanacaksanız, onları yazmamanız programın boyutunun daha da şişmesine sebep olacaktır. Yani kısaca “configure -platform win32-msvc2008″ girmeniz yeterli bile olabilir.

http://www.formortals.com/build-qt-static-small-microsoft-intel-gcc-compiler/

Üstteki sitede dosya boyutunu düşürmek ve static işlemi için gerekli bilgiler var. Kopya&Yapıştır yapmak yerine linki vereyim dedim.  Adımları tek tek uyguladım, boyut küçülüyor gerçekten. Yazının en altında Visual Studio 2008 için daha başka eklenebilecek parametreler var ayrıca… (Thanks to Charles N. Burns for this excellent article. Couldn’t find your e-mail for wanting permission to publish . If you don’t want me to refer here, please contact me)

Bu işlemleri neden Visual Studio 2008 Command Prompt’ta yaptık diyenler, eğer normal komut satırı ile bu işlemleri yaparsanız derleyici (nmake) bulamadığı şeklinde hata verir. Sağda solda vsvars32.bat’ı çalıştırınca düzelir filan diyorlar ama düzelmedi bende. Bu yüzden bu kadar uğraşıp Visual Studio 2008 Command Prompt’a girdik.

Configure işlemi çok fazla uzun sürmez. İşlem bitince komut satırına “nmake” girin, bu QT’yi baştan ayarlayacağı için oldukça uzun sürmekte. İki işlemin de bilgisayar özelliklerine göre değişken zamanlar tutacağını unutmayın. (İnternette ilk bulduğum kaynak 4:30 saat demiş, configure on dakika sürmezken, nmake yaklaşık dört saat tuttu bende) Bu iki işlemi yaptıktan sonrası pek de sıkıntı değil.

Şimdi Visual Studio 2008′i açın ve Tools->Options -> Projects and Solutions -> VC++ Directories kısmına “c:\QT\2009.xx\QT\” klasöründeki include (Include Files başlığı altına), bin (Executable Files) ve lib( Library Files) klasörlerinin yolunu verin. İşlem bu kadar…

Diyebilirsiniz ki “Ben direk sitesinden (http://qt.nokia.com/downloads/visual-studio-add-in) Visual Studio eklentisini kurar çalıştırırım!”. Olmuyor böyle güzel kardeşim. Güzelcene ekleniyor bunu yükleyince Visual Studio’ya QT başlığı ve görsel tasarım zımbırtısı, hatta yeni proje diyince de direk QT başlığı eklenmiş oluyor ama proje açmaya çalışınca QT yüklü değil gibi hata veriyor. Gidip bu yolları aynı şekilde belirtince sorun çözülmüyor, çünkü:

QT GCC derleyicisini kullanıyor. (Linux’daki c++ derleyicisi) Kütüphane dosyaları güzelcene .lib uzantılı değil .a .o gibi şeyler. Yukarıdaki işlemler sonucunda bu kütüphanelerin tamamını .lib olacak şekilde derletiyoruz. Evet, bu yüzden bu kadar uzun ve sıkıntılı bu işlem….

Bu işlemleri yapmadan direk yol gösterip derlerseniz “qtmain.lib” (release için bu, debug için qtmaind.lib) dosyasını bulamadığını söylüyor Linker. Olmayan dosyayı bulamaz doğal olarak.  ”-debug-and-release” komutu işte ikisi için de gerekli olan bu kütüphaneleri ayarlıyor sağ olsun.

İşlem sonucunda daha önce (tabi ben bazı işlemlerle boyutunu değiştirmiştim) 1.55GB tutan kütüphanelerimiz artık 17.5GB tutuyor! Ama en azından artık kütüphanelerin hepsinin (tabi parametre olarak eklenmemesini istediklerimiz hariç) girer .lib karşılığı var! Buna sevinmek mi lazım üzülmek mi size kalmış…

Umarım bakanların işine yarar…

Published in: on 26 Eki 2009 at 16:38  Yorumlar (40)  
Tags: , , , , , , , , , , , ,

The URI to TrackBack this entry is: http://ahmetsayman.wordpress.com/2009/10/26/visual-studio-2008e-qt-eklemek/trackback/

Bu yazıya yapılan yorumlar için RSS beslemeleri.

40 YorumYorum yapın

  1. Çok güzel anlatmışsınız Teşekkürler. ama

    configure -platform win32-msvc2008 -debug-and-release -static -no-sql-sqlite -no-qt3support -no-opengl -no-libtiff -no-dbus -no-phonon -no-phonon-backend -no-webkit

    Buradaki parametrelerden korkuyorum. Galiba “no” ile başlayanları ekleyince, örneğin no-opengl yi ekleyince opengl aktif ollmuyor. Sadece configure yazdığımda ve nmake dediğimde, VS 2008′de qt projelerini derleyebildim.

    Bu arada “Şimdi Visual Studio 2008′i açın ve Tools->Options -> Projects and Solutions -> VC++ Directories kısmına “c:\QT\2009.xx\QT\” klasöründeki include (Include Files başlığı altına), bin (Executable Files) ve lib( Library Files) klasörlerinin yolunu verin. İşlem bu kadar…”

    QT’nin vs 2008 Eklentisi yüklenince,Bu adıma gerek yok sanırım.

  2. Yorum için teşekkür ediyorum, ilk eklediğimden bu yana iki ay geçti daha ilk yorum :) Ya işe yarıyor millet bir şeyler sorma ihtiyacı duymuyor, ya da kimse ilgilenmedi yazı ile.

    Neyse, o parametreleri yazıda açıkladım. no- diyince evet tahmin ettiğin gibi eklenmiyor. Ben son denememde oradaki parametrelerin neredeyse iki katı kadar daha ekledim, boyutu çok küçüldü. Eğer yazacağın programda o özellikleri kullanmayacaksan (misal SQL desteği istemiyorsun, eklemenin anlamı yok, Webkit en çok yer tutan kütüphane, onunla direk browser bile yapabiliyorsun ama sadece bir siteden geri alıp çekeceksen MSDN kütüphaneleri çok daha az yer tutar ve kullanışlı olur gibi…) bu parametreyi ekleyeceksin. Zaten açıkladım bunlar boyutu azaltmak için, sadece platform parametresini yazarsan, herşey dahil edilir ama hem işlem ÇOOOOOK uzun sürer hem de yapacağın programın dosya boyutu onlarca mb’lara çıkar.

    Bu işlem yapılmasının tek sebebi bu değil ayrıca: Dediğin doğru Qt Addin yükleyince direk derleyebilirsin ama QT’nin klasörüne bakarsan oradaki kütüphane dosyaları .dll veya .lib olarak değil, .o ve .a şeklinde. Linux’taki dll ve lib’lere denk geliyor bunlar. Bu işlemi yaparak Windows altında rahatlıkla değişiklik yapabilirsin, istersen dinamik istersen de static olarak rahatlıkla programına ekleyebilirsin. Ancak bu işlemleri yapmadan derlersen her seferinde tüm kütüphaneyi kendi içindeki derleyici ile dönüştürerek yüklersin ki bu çok daha yer tutmasına sebep olur. MSVC derleyicisi optimizasyon olarak diğerlerinden daha iyi. (En azından araştırdığım kadarı ile yorumlar bu şekilde)

    O include, bin, lib adımları da dediğim gibi, işlem sonucunda ortaya çıkan dll, lib dosyaları için filan yapıyorsun. Eğer salt kullanacaksan QT’yi dediğin gibi bu adımlara gerek yok.

    Yazıyı yazmaktaki amaç programda optimizasyon (hem boyut hem hız olarak) yapılmak isteniyorsa neler yapılacağını anlatmaktı.

    Tekrar ilgine teşekkür ederim :)

  3. Yazıya ilgisizlik, qt nin çok kullanılmayışındandır. Yoksa türkçe böyle bir kaynağın olması nimettir :). Açıklamalar için ben teşekkür ederim.

  4. Bu arada visual studio’da veya qt’de static olarak derleme için illa configure parametrelerine -static parametresi eklenmeli değil mi ?
    Static derleme için neden illa static derlenmiş bir qt ye ihtiyaç var anlamıyorum, bilmiyorum : Bir kaç fikrim var ama yetmiyor.:)

    Bir de ,

    “Şimdi Visual Studio 2008′i açın ve Tools->Options -> Projects and Solutions -> VC++ Directories kısmına “c:\QT\2009.xx\QT\” klasöründeki include (Include Files başlığı altına), bin (Executable Files) ve lib( Library Files) klasörlerinin yolunu verin. İşlem bu kadar…”

    Şimdi ben bunu yapmayınca sadece, eklentisini kurunca

    “Ancak bu işlemleri yapmadan derlersen her seferinde tüm kütüphaneyi kendi içindeki derleyici ile dönüştürerek yüklersin ki bu çok daha yer tutmasına sebep olur”

    Bu dediğin mi olucak ?

    Burada kafam karıştı şimdi ben qtyi yükledim
    salt “configure” yaptımve, nmake yaptım
    add on yükleyip qt klasörünün yerini qt/options yazdım vs 2008′de. Visual studio için libraryler oluştu(oluşmayınca zaten direk .lib dosyası için hata veriyordu sanırım), şu anki derlemelerimde hata yok, ama dönüşüm yapıyor diyorsun. Zaten .lib dosyaları var. Derleyici de zaten Visual Studio, daha ne dönüşümü yapılıyor anlamadım :)

  5. Sonunda WordPress’e giriş yapabiliyorum adam gibi. Kusura bakma fazlaca geç cevap vermiş olacağım ama senin ilk yorumunu onaylamam bile 3 gün sürmüştü. Herhalde serverları ile alakalı bir sıkıntı vardı WordPress’in. Nette bilgi bulamamış maille sövmeyi planlıyordum ki sorun çözülmüş…

    Ben internete çok bakındım ve ilk sorunun cevabı Visual Studio için “Evet”. Yani static derleme işlemi için configure’a -static parametresinin eklenmesi lazım. Çok uzun olduğu için eklemeden denemedim, eğer sen de olursa bunu paylaşalım, eklemeyi unutanlar tekrar uğraşmasın. Ancak QT Creator’da bu işlemi sadece proje dosyasına +static { } yazıp köşeli parantezler içine nelerin static ekleneceğini yazarak hallediyorsun.

    Aslında yazının genelinde değinilen en önemli konu “static derleme” konusu idi. Belki benim yazı yazma beceriksizliğimden belki de başlıktan böyle bir kafa karışıklığı durumu olması muhtemel.

    Sadece configure yapınca da olabileceğini söylemiştim. -msvc2008 parametresi bu dönüşüm işinin VS’ye yapmasını söylüyor, kendi default derleyicisi yapmadığı için daha bir optimize oluyor.

    Daha önceki yorumlarında da sorunsuz çalıştığını söylemişsin, ancak şunu denemeni rica ediyorum: Yazdığın bir programı, bilgisayarında QT ile alakalı herhangi bir şey yüklenmemiş bir arkadaşına gönderip çalıştırmasını iste. Program çalışmayacaktır. (En azından nokia’nın ve diğer ingilizce bilen insanların yazdıkları kadarı ile) Static işleminin muhabbeti de bu ; dosya boyutu büyüyor çünkü tüm kütüphaneleri programın içine yüklüyor, böylece bilgisayarında QT kütüphaneleri yüklenmemiş kişiler rahatlıkla senin programını kullanabiliyor. Yazıda bu static derleme işlemi ve özellikle oluşacak olan dosyasının boyutunu nasıl düşürülür onu anlatmak istemiştim. Zaten sende çalışması da en azından bir kere “configure , nmake” işlemini yapmandan kaynaklanıyor. O parametreleri eklesen de eklemesen de o işlem zaten lib’leri oluşturmaya yönelik. Sadece farklılıklar oluşuyor parametrelere göre.

    Tekrar bir göz attım da bu kadar açıklayıcı bir cümle bulunmuyor. En iyisi ben başlıkta bir değişiklik yapayım ;)

    Bilmiyorum ne kadar açıklayabildim ama hala aklında bir şeyler varsa çekinmeden sor lütfen, ilgilenen birini bulmuşum adam akıllı anlatmadan bırakmak istemiyorum :)

  6. Şu an okudum, bende geç yazıyorum zaten boş ver, “geç yazma” konusunu daha iyi oluyor böyle :)

    Bu arada static derlemeyince direk derlediğim programnın ana klasöründe programı çalıştırmayı deneyince bile dll hatası veriyor zaten.

    “Ancak QT Creator’da bu işlemi sadece proje dosyasına +static { } yazıp köşeli parantezler içine nelerin static ekleneceğini yazarak hallediyorsun.”

    Burada, şimdi mesela mingwm10.dll hatası veriyor bir kere daha sonra da qt nin ana dll leri için hata veriyor Bunları şimdi nasıl ekleyecem static olarak. ?

  7. Visual Studio kullanacaksan programları yazarken yazımı tavsiye ederim :D

    QT Creator’da da .pro uzantılı proje dosyasına
    CONFIG +=static ekle, eğer başka bir ayar varsa \ koyabilirsin aralara.

    Misal: CONFIG += static \
    qaxcontainer

    Daha sonra aynı pro dosyasında STATIC diye bir başlık açıp belirttiğim gibi {} ler içine misal qtgui, qtcore, qaxcontainer filan yazabilirsin ancak bu işlemleri yapmak için de en az bir defa -static olarak derlemen lazım.

    Visual Studio’da sorunsuz kullanabilmek için bahsettiğim adımları yapmanı tavsiye ederim. Hatta ilginçtir bence Visual Studio’ya eklenen QT Addin’in görsel arayüzü QT Creator içindekinden daha kullanışlı. (İşte edit boxları felam sürüleyip bıraktığın yer, direk adı aklıma gelmedi)

    Son olarak o tip dll hatalarını, programın çıktısının olduğu klasöre kopyalayarak çözebilirsin. Ama dediğim gibi static derlemek gibi olmaz.

  8. merhabalar arkadaslar bende bu ıse yeni başlayanlardanım, yazdıklarınızı okudum fakat derleme sonra dosya boyutu 17.5 gb lerde ve yaklasık 4 saat gibi sürelerde bıtıyor dıye yazmıssınız. Sabah Saat 10.00 dan berı beklıyorum Saat suanda 14,03 hala bıtmedı dosya boyutu daha 5,47 Gb larda falan acaba yanlıs bısey mı yaptım? bu arada yaptıklarım qt commerciel vs2008 exe yi kurdum daha sonrada vs command prompt tan configure -qmake dedım kısa bır sure sonrada dos ekranında “just make the -nmake” bunun gıbı bısey cıktı -nmake dedım ve halen beklemekteyım. ıns bı sıkıntı yoktur varsa yazarsanız sevınırım arkadaslar, hani internette turkce kaynak yok zaten sızlerde bılgılerınızı paylasmıssınız. Hepınıze cok teseekurler iyi gunler

  9. vala yukardakı yorumdan 5 dakıka sonra bıttı bakalım bı calısmalara ufaktan:D

  10. arkadaslar benım bir sorum daha olucak bu Qt her platformda calısıyor mu eger calısıyorsa bı gereksınım var mı mesela Java ıcın java runtıme environment gibi falan yada .Net gibi?

  11. Öncelikle ilgin dolayı teşekkür ediyorum Hazad :)
    İlk yorumun için; commercial versiyonunu değil free versiyonunu kullanmıştım ben. Ama dosya boyutunda değişimin azalma değil artma yönünde olacağını tahmin ediyorum çünkü kimi kütüphaneler free versiyonda mevcut değil.(Ayrıntı veremeyeceğim şimdi ama sitedeki karşılaştırmada bu tip farklar olduğu yazıyordu diye hatırlıyorum)Boyut değişimi tamamen derlediğin şeylere bağlı; yazıda anlattığım gibi. Belki commercial sürümünde örnekler bulunmadığından dosya boyutları daha azdır. Çünkü hiçbir örneği derletmediğimde 1.5gblere kadar düşüm görmüştüm. Kısaca dosya boyut işini çok kafana takma.
    İkinci yorumun için; şimdiden kolay gelsin. Örnek bulmak çok kolay değil, olanlar da her zaman açıklayıcı olmuyor ama gerçekten görsel olarak güzel ve pratik program yazılabiliyor.
    Üçüncü yorumun için; yazıda static derleme işini anlatıyorum. Eğer programlarını static derlersen karşı tarafın sisteminde herhangi bir şekilde qt veya onla alakalı bir şey yüklü olmasına gerek yok çünkü programın içine kullandığın TÜM kütüphaneleri yerleştirmiş oluyorsun. Yazıdaki amaç da gereksiz kütüphaneleri atıp programın çıktısı olan dosyanın boyutunu düşürmek. Ama eğer bu işlemi yapmazsan, programı kullanacak kişide Qt kütüphaneleri yüklü olması lazım.
    Şunu belirteyim ben hep static derleme işlemi yaptım, bu işlemi yapmayınca programı harici olarak (release klasöründen misal) çalıştırmaya kalktığında sürekli dosya bulamadığından şikayet ediyor. Gerekli kütüphaneleri aynı klasöre atman lazım. Ancak bu pek de makul bir çözüm olmadığından, sistemine Qt kuran kişinin Windows’a gerekli kütüphaneleri nereden çekeceğini göstermesi lazım. Sistem değişkenlerinden değişiklik olabilir, gerekli dll’leri basitçe system32 klasörüne kopyalamak olabilir bu ancak bu konuda herhangi bir çalışmam olmadı o yüzden net bilgi veremeyeceğim.
    Her platform konusunda da öyle olduğu söyleniyor. Ama sonuçta Windows’da derlediğin bi programı pat diye Linux/Mac ortamına atıp çalıştıramazsın. (Onlarda exe yok malum…) Bu sistemler arası uyumluluktan kasıt kodla olması gerekli; yani Windows’taki Qt projende bulunan kodların tamamını Linux’taki, Mac’taki Qt projesine kopyaladığında sıkıntısız derleyip çalıştırabilirsin.
    Umarım bir nebze de olsa açıklamada bulunabilmişimdirim. (Ne biçim kelime oldu bu şimdi)

  12. Tesekkurler dostum bı kac arkadasımın bilgisayarına ornek uygulamalar yukleyıp bakmıstım ordan bi dll hatası verdı acaba bısey mı eksık dıye merka ettım bıde hanı yenı baslamısım o yuzden. Bıze okulda FOX-TOOLKIT öğrettiler daha dogrusu oğretmeye çalıştırlar:D benzer bır yapıya sahşıp gibi bılmıyorum tam olarak ama tip göstiriciler sankı aynı gıbı geldı bana FOX’ta fena deil gibi ama bi geliştirme kiti neredeyse hiç bişeyin olmayışından direk vazgectım ondan. Qt iyi gibi

    Bu bahsettiğin static için basit bi örnek yazabilirmisin mesela Merhaba Dünya gibi baska bı XP de çalışsın yeterli zaten ondan sonra sorularım bol bol gelicektir zaten:D:D

  13. Örnek için öncelikle makalede yazdığım adımları uygulamanı tavsiye ederim. Uzun sürecek evet (süreyi ek parametreler ile kısaltabilirsin, özellikle örnekleri derlemeyip. Şu an hatırlayamıyorum ama verdiğim linkten gidince oradan bulabilirsin) ama static derleme yapabilmen için bu adımlar gerekli.

    Program örneği olarak; eğer GUI olacaksa zaten projeyi o şekilde oluşturdun mu QT Creator’da olduğu giı düşünüyorsan şu abi bir görsel tasarım aracı gelecektir.
    Console uygulamasında yardımcı olamayacağım çünkü kullanmadım. Dökümantasyonda QtCore kısmına bakarsan orada gerekli kodları bulabilirsin.
    Herşeyi geçtim QT’nin kendi sitesinde tutorial olması lazım orada Hello World örneği var.

    Aslında gerçekten yardımcı olmak isterdim ama nerden baksan dört ay olmuş bu yazıyı yazalı, yazdıktan sonra da bir kaç hafta uğraştım QT ile. Şu an bilgisayarımda yüklü bile değil QT :)

  14. cute a uzaktan hayran hayran bakan birisi olarak bize enaz 1 gün kazandiracak bir makale için nekadar teşekkür etsek az. ellerinize sağlık.

  15. math type gibi bir denklem düzenleyicisi c#.net projesine nasıl eklenir, nasıl yaratılır, projemde üst ifadelerinin,derecelerin kareköklerin gerektiğinde kullanılabilmesini sağlayacak bir equation editor bulamıyorum,latex ile olanlar var bir kullanıcıya da regular expression yazdırır gibi parantezlerle sqrt’ler ile karekök yazdırmam mümkün değil,kullandığımız math type editorü gibi bir daha ufak çaplı bir equation editor eklememiz mümkün mü ?

  16. . Merhabalar, QT interface le yapılmıs bir
    projeyi Visual studio da acmak istiyorum. Ancak
    #include
    #include
    kısımlarında hata alıyorum . Visual studio için QT Addin indirdim,
    ayrıyetten QT Creator ı da kurdum aslında. Ancak QtGui librarilerini
    include edemiyorum. . Benim dizaynı görüp kodu anlamam gerekiyor , ancak proje dosyası içerisinde .cpp ve .h dısında baska uzantılı dosya yok, interface i göremiyorum . ( sanırım .ui uzantılı bir dosya olsa bunu görebileceğim )
    Bununla ilgili bir öneriniz var mı ?

    QT creator da kendim yeni bir proje olusturup içerisine yapılmıs olan bu projenin ilgili .cpp dosyalarını kopyala yapıstırıp yapıp projeyi run ettiğimde de sorun vermiyor executed diyor ancak herhangi bir gui açılmıyor.

    Amacım C++ da yazılmıs bu tarz bir programı JAVA ya dönüştürmek ancak ilk
    aşamada nasıl bir interface e sahip oldugunu görmek istiyorum.Bunun içinde
    bu projeyi çalıstırmam gerekiyor . Yani ilk asamada nasıl bir arayüz oldugunu görmem gerekiyor. Birde C++ da ki header dosyalarını
    (main.h gibi) javada nasıl olusturmalıyım ? bu header dosyaları interface gibi birşey mi ? (C++ hiç kullanmadıgım için sorularımı mazur görün :) )

  17. Selamlar;
    Çok güzel bir konuya değinmişsiniz tebrik ederim.Ancak benim bir problemim var.Ben windowsda qt nin command prompt consolunu kullanarak dosyaları derlemek istiyorum.Fakat make komutunu bulamıyor.Böyle derlemek için ne yapmam gerekir çok acil yardımcı olursanız çok sevinirim
    Şimdiden teşekkürler

  18. Merhabalar,
    Yazınız için teşekkürler çok faydalı bir doküman olmuş, ben de şimdi 2.bölüme geçtim.Dosyalar bir yandan oluşurken size bir soru sorsam:). Ben aslında VS üzerinde CSharp yazarım ve c++ bilmiyorum. QT kütüphanelerini C# koduyla kullanmam mümkün değil sanırım. Qyoto diye birşey başlamış ancak şu an canlı değil. VS Add-In ile de kullanılacak dil değişmiyor aslında. C# ile yazmanın bir yolu var mı?

  19. merhabalar ahmet bey,
    Bu işlemleri yaparken “nmake” komutundan sonra hata alıyorum:
    “Undefined interface NMAKE : fatal error U1077: ‘C:\Qt\2010.04\qt\bin\moc.exe’ : return code ’0×1′ Stop.

    NMAKE : fatal error U1077: ‘C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN\nmake.exe’ : return code 0×2 Stop.

    NMAKE : fatal error U1077: ‘cd’ :return code ’0×2′ Stop.

    .Nerede hata yapıyorum acaba?

  20. İlginize teşekkür ederim.

    QT kütüphanelerinin C# koduyla kullanımı konusunda şunları diyebilirim:

    Normalde C++ ile yazılımış kütüphaneler (dll veya lib) C#’da kullanılabilmektedir. Ancak QT için böyle bir desteğin söz konusu olup olmadığını bilemeyeceğim.

    Bu sebeple tam olarak işin olurunu olmazını söyleyemem ama eğer mümkünse C#’da DLLImport kullanarak C++’da derlenmiş kütüphanelerin kullanımı mümkün olmaktadır.

  21. Merhaba;
    Ben bir eklemede bulunmak istiyorum. Eğer QT framework olarak “Qt libraries 4.6.3 for Windows (VS 2008, 194 MB)” yüklerseniz, QT configure etme gereği duymazsınız.
    (Su an icin son sürüm 4.6.3 oldugu icin 4.6.3 diye belirttim) SDK sadece source üzerinden compile etmek icin ve kendi isteginiz dogrultusunda configure etmenize olanak saglar.

    @hakan, bir cozume ulasamadiysaniz framework olarak kurup kullanmanızı tavsiye ederim.

    Kolay gelsin.

  22. Neden böyle işi zorlaştırıyorlar ki ? İsteyen customize compile yapar ona destek verirsin anlarım ama ürünün büyük(acemi) kitlelerce kullanımını arttırmak için bu kurulumu kolaylaştırması lazım kanımca, mesela kurulduktan hemen sonra bir soru sorsa “C:\Qt\2010.04 dizininde source code bulundu. Derlemek istermisiniz ?” daha sonra istenen modüllere tik atılsa daha uygun olur. Ama her firma Microsoft gibi kolaylaştırmıyor işleri :P

  23. Yorumun için teşekkürler.

    Bahsettiğin konuda haklısın ancak emin ol kasıtlı zorlaştırma yapılıyor. Kişisel kullanım için ücretsiz Qt. Ücretsiz ve openSource olan her yazılım, kullanılması zorlaştırılarak piyasaya sürülüyor.

    Nedeni ise açık kaynak kodu destekleyenlerin, “Yazılımlar ücretli olmamalı!” ile başlayıp insana umut vaad eden ama “Ya tabi para da kazanalım ama ne bileyim dökümantasyon, kurulum filan paralı olsun” şeklinde devam eden “görüşlerinden” geliyor. Kimse haksız değil, sonuçta ortada emek var ve hakkı ödenmeli. Ancak Microsoft parasını ver doya doya kullan derken, bu tip yazılımlar “Kullanabilirsen bedava kullan, yoksa paranı alırım” mantığı ile piyasaya sürülüyor.

    İşin ahlaki, hukuki, cardi, curdi yönünü bilmem etmem ama açıkçası bu mantıktan hoşlanmıyorum. MSDN gibi bedava ve eşsiz bir dökümantasyon varken insanların hala Microsoft’a paragöz diye kızmasını da kınıyorum.

    Sözün kısası, amaç zaten acemilerden para koparmak gibi düşünebiliriz…

  24. Hakan AKTAN,
    Ben de aynı sorunla karşılaştım. Aşağıda bir açıklama var ama bende işe yaramadı.

    http://www.opencascade.org/org/forum/thread_11268/

  25. Merhaba ben bu islere herzaman meraklı olmus ama birturlu aradıgım destegi bulamayıp ertelemis biri olarak bazı sorularım olacak. Qt indirip kurdum cep telde program calısıyor basit birsey yapabildim ancak ama okadar heveslendimki, bilgisayardada çalısan bir program yapma iştahı kabardı durdu. Sizin yazınızı okuyunca bunu VS ile birlestirip yapabilecegimi anladım çok teşekkur ediyorum burdan gereken destegi herzaman alabilirmiyiz…

  26. Öncelikle soru bombardımanına tutmadan cevap verip veremeyeceğimi sordunuz için teşekkür ediyorum.

    Bu tip yazılar yazılmasındaki amaç gerçekten insanlara yardımcı olmak ancak açıkçası bu yazı, insanlara yardımcı olamayacağım konulara kadar uzamış oldu yorumlarla. Ben bu yazıyı yazalı bir yıldan fazla olduğu gibi, bu yazıda anlattığım mevzuyu yaptıktan ve birkaç deneme yaptıktan sonra Qt’ye hiç dokunmadım. 1 yıldan uzun süredir HERHANGİ bir kütüphane kullanmadan, (Win32 API’nin büyük kısmı da dahil) GUI tasarımı gibi işler yapmaktayım. O yüzden açıkçası kütüphanelerdeki kolaylıkları hiç bilmediğimden, varsa bile yardımcı olamayacağım gibi, işleri daha zora sokma ihtimalim var.

    Eğer C++ konusunda genel olarak herhangi bir soru olursa (herhangi bayağı bir iddialı oldu gerçi) gerçekten yardımcı olmak isterim. Ancak iş QT’ye geldiğinde hem kullanmadığım bir kütüphane hem de zaten bu kütüphanelerin işi insanlara kolaylık sağlamak olduğundan bana soru sorulmasındansa QT ile alakalı insanlara sorulması taraftarıyım.

    Neyse kısacası Serkan bey programlama dilleri ile ilgili sorularınızı elimden geldiğince cevaplarım ancak maalesef QT konusunda size faydam dokunmaz. Çünkü cevap vermek için öncelikle benim oturup kullanıp test etmem lazım ve maalesef buna vaktim yok. Sırf cevap vermiş olamak için de Google’da iki arama yapıp, ne idüğü belirsiz cevapları da çevirip söylemek istemem. Yoksa C++ ve sadece Gdiplus kütüphanesi ile (Yukarıda bahsettiğim kütüphane kullanmama konusu ile çelişmiyor merak etmeyin. Gdiplus Win32 içerisinde ekrana bir şeyler çizdirebileceğin EN alt seviye kütüphanedir) basit bir oyun yapıp hem tutorial olarak açıklama hem de kodları yayınlama fikrim var. Bu fikir 3-4 aydır var ancak daha proje dosyalarını bile oluşturamadım.

    Hazır yorum yazıyorken daha önce soru soran ancak benden cevap alamayan kişiler kusura bakmasınlar. Belki başka biri görüp cevap verir diye yorumları sitede yayınladım.

  27. merhaba
    öncelikle ahmet bey bu adım adım ve duru anlatımınızdan ötürü çok teşekkür ederim çünkü qt konusunda bu gibi basamak basamak anlatımlara çok ihtiyacım var. paylaşımdaki hatayı bugün ben de çektim ve çözüm için burayı kullandım o yüzden bugün ancak yorum yapabiliyorum :] gerçekten işe yaradı. fakat qt nin sdk exe sine (yıldızdan sonrasına)baktığımızda kendi sitesinde zaten vs e uyumsuzdur demekte. bu nedenle emre beyin 6 eylülde de paylaştığı gibi sadece windows için qt exe (4.7.1) yi yükleyerek çalıştırabildim addin ile birlikte. yükleme sonunda yine çalışmadı fakat restart tan sonra çalıştırabildim.
    ama benim bi sormak istediğim konu ise şu ki;
    widget ları açmak istediğimde vs2008 içinde değil de qt designer üzerinde açılmakta. bunu değiştirebileceğim bi yol biliyor musunuz?
    tekrar teşekkür ederim bu güzel ve benim gibi başlangıç seviyesinde olan biri için dahi basitçe anlayabileceği bir dil kullandığınız için.

  28. Yorumunuz için teşekkürler.

    Öncelikle bir varsayımda bulunmalıyım:

    Hatırladığım kadarı ile Widget açmak istediğinizde (VS 2008 içerisinde Addin yüklendikten sonra yani) komple Qt Designer değil de, onun görselliğine benzeyen ek bir pencere açılıyordu. Böyle olması şart değil, eğer Qt’yi yapanlar isteselerdi komple QT Designer açılır, tasarım yapılır, program kapanır ve VS2008′e dönülür şeklinde de yapabilirlerdi ama gerçekten ek pencere açılıyordu diye hatırlıyorum. Varsayımım da böyle olduğu yönünde.

    Cevabım hayır :). Çünkü VS 2008′de kullanılan görsel öğeler (Misal C++ için Win32 API görsel öğeleri, C#’da tool’lar gibi widgetlar) Windows tarafından tanımlandığı için tam destek vermiş bulunmaktadır. Tam açıklamadım gibi, cümleyi silmeden şöyle izah etmeye çalışayım:

    Size bir C++ programı tasarlarken (C# veya Basic de olur. Visual Studio için konuştuğum belli olsun da tek) widgetları ayarladığınız ekran, dinamik olarak sizin programda kullanacağınız widgetlar çizilen minik bir programdır Visual Studio içerisinde. Ancak siz Qt’nin Widget’larını kullanmak istediğinizde, Visual Studio ekrana ne çizdirmesi gerektiğini anlamayacağı için VS’nin kendi görsel aracını kullanamazsınız.

    “Madem öyle bu Addin niye?” diye sorarsanız; Visual Studio gerçekten ÇOK iyi bir derleyici. Şahsen ben de Qt’yi kullandığımda kendi Designer programı yerine Visual Studio’da kod yazmak istediğimden bu anlattığım adımları uygulamıştım. Qt’yi açıp görsel öğeleri yerleştiriyordum, daha sonra Qt Designer’ın ürettiği kod çıktısını kendi programıma kopyalayıp geri kalan tüm işlerimi Visual Studio ile yapıyordum. Bu Addin ile de bir nevi siz uyumluluk eklemiş oluyorsunuz.

    Teorik olarak herhangi bir derleyicide Qt kütüphaneleri include edip derlemek arasındaki fark işte o Addin ile eklenilen, Qt Designer’ın kendisini gerektirmeden görsel tasarım yapabileceğiniz küçük araçtır. Ancak VS içindeki editörden kod çıktılarını alamadığımı, bu yüzden QT Designer’ı kullandığımı hatırlıyorum.

    Kısaca hayır. En azından benim bildiğim kadarı ile. Ancak size tavsiyem Qt Designer ile görselliği ayarlamanız, daha sonra kodları, ne bileyim loadLayout olsun adı, bir method altına toplayıp Visual Studio’da derleme yapmanızdır. Çünkü gerçekten güzel bir derleyici Visual Studio.

    QT Designer kötü değil tabi de sonuçta Windows’ta kod yazıyorsam, Visual Studio varken neden başkasını kullanayım?

    Az da olsa bir açıklık getirebilmişimdirim umarım…

  29. galiba ben yanlış anlattım ya da tam anlayamadım, ben qt designer ı kullanmak istemiyorum .net ya da diğer application lar gibi herşey vs2008 üstünde olsun ki uygulamada widgetları değiştirdiğimde visualstudio direk görebilsin, tanımlayabilsin istiyorum. bu konuyu araştırma imkanım olmadı ama sormak istemiştim.
    yine yardım ederseniz sevinirim.

  30. O zaman merak etmeyin, Addin’i düzgün bir şekilde yüklerseniz istediğiniz olacaktır. Normalde proje oluştururken Win32 C++ Project gibi seçenekler seçilen kısıma Qt Project gibi başlıklar da eklenecek. Eğer Qt projesi oluşturursanız widgetları ayarlarken size yardımcı olacak görsel editör de olacaktır.

    İlk sorduğunuzda anladığım şu idi: Siz Addin’i yüklemişsiniz, program derleniyor ancak widget ayarlaması yapılırken Qt açılıyor, siz bunu istemiyorsunuz şeklinde idi.

    Kısaca Addin’i düzgün yüklerseniz tüm işlerinizi VS 2008′de halledebilirsiniz. Qt Designer’a gerek kalmayacaktır.

  31. Slm ben çok acemiyim bu konuda win7 kullanıyorum ama qt4 yüklü 2010 vs yüklü dos ortamında configure komutunu çalıştıramıyorum lütfen yarım edermisiniz.

  32. tekrar merhaba,
    korktugum basima geldi; dün qt opensource(4.7.1) u ve qt-vs-addin-1.1.7.exe yi yükledim. fakat widget vs2008 üzerinde degil de qt designer da açiliyor. opensource(4.7.1) yerine 4.7.0 versiyonunu denedim çünkü addin açilirken 4.7.0 dan bahsediyordu. bu sefer de qt application “Unable to find a Qt build! To solve this problem specify a Qt build” dedi. tabi mecburen 4.7.1 i yeniden yükledim. bilgisayarim 64bit ama yüklemeler 32bit, bu konuda bi uyumsuzluk olmaz zannedersem. header, cpp dosyalari açiliyor fakat .ui dosyasi qt designer a gidiyor. üstelik yazilim yaparken de komutlar hakkinda ben yazarken kopya da vermiyor (bu kismi belki hatanin bi parçasidir diye yaziyorum). kusura bakmayin bu link açilali bir seneden fazla olmus ama umarim bu hatamda da yardimci olursunuz arkadaslar.

  33. Ahmet bey izninizle birkaç sorum daha olacak.Bilgisayarıma qt 4.7.1 yukledim visual studio 2010 yükledim ve qt-vs-addin-1.1.7.exe kurdum VS yi çalıştırdıgımda, qt yu seçip yeni bir peoje açabiliyorum. QT desing çalışıoyor vs nin altında haliyle orda duzenleyip kapatıyorum ama düzenledigim deneme.ui dosyam duruyor ne duzunlediysem aynısu tekrar tıkladıgımda karşıma beliyor buraya kadar sorun yok lakin relase altında exe sini vs de derliyorum ama cıktınısını bir turlu çalıstıramıyorum yanına gerekli tüm dll lerei koymama ragmmen şu hatayı alıyorum ”_Z10qAllocMoreii yordam giriş noktası, Qtcore4.dll dinamik baglantı kitaplığında bulunamadı” bütün gece saçma sapan bir sürü sitelere girdim bu saatte kadarda hala çözüm aramaktayım sizce ne yapabilirim bir yol biliyorsanız sevinirim ayrıca türkiyede qt hakkında bilgi web sayfası yok denecek kadarda az çok şaşırdım açıkcası iyi çalışmalar

  34. Öncelikle Samet bey anlattığınız kadarı ile sizin sistemde bir sıkıntı yok. Yazılım yaparken kopya verme olayı Visual Studio’da Intellisense oluyor ve 2008 versiyonunda gayet problemli. Kafasına göre çalışıyor, kafasına göre çalışmıyor. İnternette Intellisense sıkıntısını giderme yöntemlerini ararsanız “belki” sorununuz çözülür. Belki dememin sebebi; belki Addin yüklenmesine rağmen Intellisense’de düzgün gösterilemiyordur QT’nin methodları. Belki diyorum çünkü yıllardır Intellisense bende düzgün çalışmaz, ama gidip de nasıl düzeltirim diye aramam. Yani çok da kullandığım bir özellik değildir. (Kullanabildiğim demek daha doğru olur sanırsam)

    Serkan bey sizin hatanızı Google’a yazdım. (_Z10qAllocMoreii yazdım sadece) Gerçekten saçma sonuçlar geldi: Tek bir mesajlaşma, 20 farklı siteye aynen aktarılmış. Ama anladığım kadarı ile şu tavsiyeleri verebilirim:

    int Q_CORE_EXPORT qAllocMore(int alloc, int extra);

    methodundan kaynaklanıyor galiba. Qt’nin çok eski sürümlerinden beri böyle bir method olduğunu söylemişler soruna karşılık. (Sanki bir anlam ifade ediyor…) Yapabileceğim yorum; eğer bu methodu (qAllocMore) kullanıyorsanız, bu methodun bulunmadığı bir versiyonu yüklemiş olabilirsiniz, kullanmamayı ya da varsa alternatifini deneyin.
    Eğer siz böyle bir komut HİÇ yazmadıysanız durum kötü; farklı bir sürüm yüklemeyi deneyebilirsiniz. Yine de Qt’nin kendi dökümantasyonundan qAllocMore methoduna bakınız derim.
    Aslında bunlardan daha da önemlisi, 2010 ve Qt Addin yükledim demişsiniz; Qt’nin sitesinden hızlıca bir baktım da, Addin’in 2005 ve 2008 için var deniyor. Yani 2010 için özel bir güncelleme yapılmamış. Halen piyasada çok kullanılmadığından 2010′a hiç dokunmadım ve ciddi farklılıklar ne var bilmiyorum. (2010 ile yapılan bir proje 2008′de açılmıyor da) Bu sebepten sizin sorununuz VS 2010 yüklü olmasından bile olabilir.

    Qt hakkında sayfa olmamasını geçtim, C#, PHP az da Java dışında neredeyse HİÇ sayfa yok. Genel bir sıkıntı bu. Bu sebepten aramalarınızı Google üzerinden yabancı sitelere yönelik yapmanızı tavsiye ederim.
    Ayrıca eğer sorununuza çözüm bulduysanız ve burada veya herhangi bir Türkçe sitede paylaşırsanız çok sevinirim. Eminim benzer hatayı alan başkaları da olmuştur.

  35. Merhaba ahmet bey ilgilendiginiz için teşekkür ediyorum.
    Öncelikle baya bir ugraşmalarım sonucu gece 03:30 da cözdüm. Qt projeyi derlerken iki farkli kütüphane kullanıyormuş, yaptıgım işlemleri sırasıyla yazmak istiyorum, bende 4.7.1 vardı, aynı zamanda 2010.5 kuruluydu. 2010.5 vs yi çalıstıramadıgım için kurmuştum. Şimdi araştırmalarım sonucunda eski versiyon yeni versiyon konusuyla karşılaştım daha sonra qt klasörünün icinde 2 tane bin dosyası oldugunu ve proje yaparken Qtcore4.dll 2 farklı bin klasöründen alıyormuş ve uyumsuzluk oluyormuş.Aynı dll olmasına ragmen biri 2.17kb digeri 2.41kb mış.Yani özetlemek gerekirse c:qt\2010.05\qt\bin içinde birtane var birde
    c:qt\2010.05\bin onun icindede aynı dll var proje yaparken birinden, derlerken birinden, aldıgı icin uyumsuzluk sorunu oldugunu ögrendim sonra bu dll ler aynı olsun diye biri digerinin icine kopyaladım sonra qt yu calıstırmak istedigimde acılmadan buna benzer bir uyarı aldım yani hic acılmadı ozaman anladımki butun sdk ları silmem lazım :) . Sonra bilgisayardaki bütün sdk ları sildim sonra sadece 2010.5 si yükledim ve çalıştı bir ıkı deneme bile yaptım.

    Şimdiiii :) yeni bir sorunum oldu vs 2010 Qt yu bulamıyor “Unable to find a Qt build! To solve this problem specify a Qt build” diye hata veriyor. Addini de yükledim ama çalışmadı restart yapmadım daha belki yaptıktan sonra vs 2010 çalışır diye ümit ediyorum yoksa tekrar 4.7.1 yüklersem yeniden qt dan hata almaktan korkuyorum. Bide ek soru bu synbian işletim sistemli cep telefon programlarını qt da derliye bilirmiyim yani çeşitli sitelerde Fw ler veriliyor telefonuna yüklüyorsun yok ben sunu ekledim sistem daha iyi oldu yok bunu ekledim yok şunu çıkardım diyorlar :) synbian işletim sistemini qt da açıp kodlarını görebilirmiyim. Ben sorunumu yukarda anlattıgım gibi cözdüm umarım başka arkadaşlarada yardımcı olur…

  36. merhaba
    en son sormuş olduğum Intellisense konusunda bişeyler buldum;
    tomato visual assist x diye bir program görselliği arttırıyo. nesnelerde de fonksiyonlarda da intellisense devrede. visual assist x sitesinden trial versiyonu var. gerekli ayarlamaları http://blog.wholetomato.com/2008/11/20/using-qt-44-with-visual-assist-x/ sitesinden arkadaşlar bulabilirler.

  37. Ahmet bey ben bu işi ilerletmek istiyorum bana tavsiyeniz ne olur kaynak nerden bulabilirim görsel egitim videolarına nasıl ulasabilirim yardımcı olursanız sevinirim

  38. Samet biraz daha açarmısın ben daha çok baştayım anlayamadım

  39. Ahmet aslında ben de senin gibi çok çok yeni başladım qtye. Fakat önceden ubuntu üzerinde biraz eclipse ile qt kullanmıştım . Orada intellisense işi çok işime yaramıştı. Örneğin;

    ui.pushbutton->

    dedikten sonra hangi fonksiyonların kullanılabileceğini gösteren bi assistan. Bu özellik vs2008 qt de yok. Fakat (yukarıda adresini verdiğim) program bu söylediğim özelliği vermekte. Kendi adıma söyleyecek olursam bu benim baya işime yarıyor.

    Ayrıca ben de kendimi qt konusunda ilerletmek istiyourm yardım edebilirseniz ben de çok sevinirim.

  40. Çok çok yararlı bir kaynak. Saatler, hatta günler sürecek bir konuyu dakikalara sığdırmışsın. Allah senden razı olsun…


Yorum yapın

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Değiştir )

Twitter picture

You are commenting using your Twitter account. Log Out / Değiştir )

Facebook photo

You are commenting using your Facebook account. Log Out / Değiştir )

Connecting to %s

Takip Et

Get every new post delivered to your Inbox.