Building Qt Framework from Source Menggunakan MinGW

Setelah sebelumnya saya mem-build Qt Framework dengan MS Visual C++ compiler, nah kali ini saya tulis yang pakai MinGW dan MSYS. Sudah lama juga blog ini tidak menulis tentang Qt.

Selayang pandang MinGW dan MSYS

MinGW adalah singkatan dari Minimalist GNU for Windows. Bisa ditebak apa isinya dari “GNU”-nya. Menurut dokumentasinya, maksudnya minimalis adalah bahwa MinGW tidak menyediakan lingkungan runtime POSIX. Tetapi MinGW menyertakan tool set opensource yang lengkap untuk development di lingkungan Windows.

msys logo icon

Ikon MSYS

Sedangkan MSYS adalah singkatan dari Minimal System, yang intinya adalah konsol shell untuk menjalankan baris perintah. Ya seperti CMD-nya Windows. Atau kalau di Linux dan Mac seperti Terminal. Nanti MSYS digunakan untuk menjalankan perintah-perintah untuk kompilasi source code Qt framework.

Mempersiapkan Peralatan

  1. Unduh MinGW yang ada di http://mingw-w64.sourceforge.net/
  2. Unduh MSYS dari http://downloads.sourceforge.net/mingw/MSYS-1.0.11.exe
  3. Unduh source code Qt dari http://download.qt-project.org/archive/qt/5.3/5.3.2/single/
  4. Di sini saya hanya mengunduh ‘qtbase’ dari http://download.qt-project.org/archive/qt/5.3/5.3.2/submodules/ (hemat kuota internet 😀 )
  5. Di sistem saya sudah terinstall Python, Ruby dan (Active)Perl. Mungkin ketiganya perlu diinstal jika mem-build seluruh modul Qt, terutama Webkit.
  6. Instal OpenSSL atau kompil sendiri dari kode sumbernya. Pada tulisan yang lalu, ternyata saya tidak mengompilasi OpenSSL, sehingga aplikasi yang dihasilkan tidak bisa mengakses https.

Mengompilasi Kode Sumber

Pastikan semuanya siap, dan lihat apakah folder bin MinGW ada di PATH.

  1. Ekstrak source code Qt. Saya misalkan di D:/Develop/Qt-Lib/5.3.2/.
  2. Buka MSYS, pindah ke direktori source code barusan.
  3. Kita akan melakukan pseudo build, maka buat folder ‘build’ di situ >> mkdir build
  4. cd build
  5. Jalankan perintah:
    ../configure -opensource -confirm-license \
    -platform win32-g++ -prefix "D:/Develop/Qt-Lib/5.3.2/release" \
    -nomake examples -nomake tests -no-icu -openssl \
    -I "D:/Develop/openssl-1.0.1i/dist/include" \
    -L "D:/Develop/openssl-1.0.1i/dist/lib" -v
  6. Keterangan: -prefix adalah tempat hasil akhir kompilasi, semua akan disalin ke situ saat perintah make install. -no-icu sama seperti tulisan yang dulu, gunanya adalah menghilangkan dukungan Unicode. Lainnya sesuaikan.
  7. Pastikan tidak ada error. Lalu jalankan mingw32-make.exe (atau cukup ‘make‘)
  8. Jika sukses, jalankan mingw32-make.exe install
  9. Selesai

Sekarang tinggal menambahkan qmake hasil kompilasi ke Qt Creator. Jika folder bin hasil kompilasi itu ada di PATH sistem, maka Qt Creator akan mendeteksinya secara otomatis.

Untuk deployment, aplikasi membutuhkan 3 DLL dari MinGW, antara lain: libstdc++-6.dll libgcc_s_dw2-1.dll dan libwinpthread-1.dll.

dependency walker

Melihat dependensi pustaka aplikasi

Advertisements

Qt QML untuk Aplikasi Android (dengan KDE Necessitas)

Necessitas merupakan kakas pengembangan untuk aplikasi Android dengan Qt Framework, dikembangkan oleh tim KDE Project. Kakas ini menggunakan Qt Creator untuk IDE dan Qt versi 4.8.2 sebagai frameworknya. Tetapi tampaknya tidak diperbarui lagi, atau mungkin sudah diambil alih oleh Digia, selaku pemegang hak lisensi komersial Qt Framework.

Sekarang saatnya saya membagikan cerita tentang belajar membuat aplikasi Android dengan Qt Framework (QML). Tulisan sebelumnya tentang kakas pengembangan aplikasi Android dan MVC di Qt QML merupakan pengantar untuk tulisan ini.

Contoh aplikasi ini adalah RSS feed reader sederhana. Saat membuat New Project, pilih Qt Quick Application. Pada pilihan Kit, pilih untuk Android. Jika tidak ada, tambahkan kit Android setelah berhasil membuat New project. Nanti Qt Creator akan secara otomatis menambahkan file-file yang diperlukan untuk membuat sebuah APK, seperti misalnya AndroidManifest.xml. Pastikan Android SDK dan NDK sudah diatur dengan benar di Option Qt Creator. Kalau Necessitas biasanya sudah ada pengaturan saat instalasi. Berikut ini adalah source code QMLnya:

Continue reading “Qt QML untuk Aplikasi Android (dengan KDE Necessitas)”

Qt QML Model, View & Delegate

Pada tulisan ini saya hanya akan berbagi kode sumber Qt Quick pertama. Ini adalah intro ke pemrograman model view dengan QML. Sebelumnya sudah saya posting model view untuk Qt C++.

Contoh proyek ini adalah Qt Quick UI, jika anda membuat New Project di Qt Creator. File kode sumber dibagi menjadi 3, ditambah satu file “Kepala” yang opsional.

Utama.qml

Ini adalah file utama yang dieksekusi dengan qmlscene. Continue reading “Qt QML Model, View & Delegate”

Android Development (Macam-macam Kakas)

logo android

Logo Android

Tulisan terakhir saya tentang programming adalah tentang development aplikasi Android menggunakan Qt Libs. Sampai saat itu saya menggunakan KDE Necessitas sebagai kakasnya. Versi Qt yang digunakan adalah 4.8.2. Sekarang saya tahu bahwa ternyata Necessitas tidak diperbarui dalam kurun waktu yang cukup lama, dan masih tetap versi alpha 4. Saya tidak tahu mengapa, tetapi saya menduga ini mungkin sudah diambil alih Digia dan menjadikannya Qt Mobile sebagai strategi bisnisnya.

Berangkat dari hal di atas, saya mulai mencoba Qt 5 for Android. Namanya baru belajar, ya maklumlah. Selain itu, karena ukuran unduhan Qt framework yang besar, saya perlu pertimbangan khusus untuk mengunduhnya. Dan selain mulai belajar pengembangan aplikasi Android dengan Qt, saya juga mulai belajar QML. Yang mana sudah saya simpulkan pada tulisan yang lalu, bahwa banyak developer yang memilih QML untuk pengembangan aplikasi mobile.

Tetapi kali ini saya belum akan berbagi kode bagaimana pengembangan aplikasi mobile dengan QML ini. Karena saya cuma masih bisa membuat “Hello World”. Continue reading “Android Development (Macam-macam Kakas)”

Kubuntu 14.04

Sebagaimana kita tahu, distro Linux sangatlah beragam. Ini menyebabkan fragmentasi yang sangat besar, terutama komunitasnya. Ini bisa menyebabkan munculnya fanatisme terhadap suatu distro tertentu dan kadang menyebabkan perselisihan kecil antara anggota komunitas-komunitas. Sehingga tak heran jika ada komunitas yang kurang welcome kepada pengguna baru.

Fragmentasi juga terjadi pada lingkungan desktop. Yang mana kasus ini menurut saya bagus karena pengguna bisa menyesuaikan seleranya masing-masing, Keberagaman dan perkembangan desktop environment ini sangat menarik untuk diperhatikan. Sejak munculnya Unity dan GNOME 3, muncul pula MATE dan lain sebagainya disebabkan oleh ketidakpuasan anggota komunitas terhadap keduanya dan juga karena semangat open source tentunya. Di mana kebebasan itu benar-benar ada, termasuk kebebasan untuk memilih DE yang cocok untuk kita masing-masing.

Ngomong-ngomong soal kebebasan memilih, saya sendiri saat ini merupakan pengguna Kubuntu sejak beberapa waktu lalu. Lebih tepatnya sejak saya mendapati bahwa KDE lebih responsif daripada Unity Ubuntu. Ini menyangkut keterbatasan kemampuan pengolahan grafis perangkat keras komputer saya. Awalnya, sebagai ganti Unity, saya menggunakan Gnome-fallback Ubuntu. Tetapi karena sudah tidak seperti dulu yang mudah dikustomisasi tampilannya, saya mencoba lagi KDE yang pada waktu itu masih terkesan ‘berat’. Namun kenyataan berkata lain. Tim pemelihara Kubuntu bekerja dengan sangat baik dengan memberikan sentuhan akhir yang menjadikan Kubuntu adalah distro KDE dengan penggunaan resource paling rendah di jajaran atas.

Continue reading “Kubuntu 14.04”

Salah satu alasan saya mempelajari pemrograman dengan Qt Framework adalah karena dukungan multiplatform. Sesuai dengan mottonya: “Code less. Create more. Deploy everywhere“. Yang perlu ditekankan adalah deploy everywhere-nya. Walaupun tidak sama seperti Java, Qt masih punya peluang untuk running di Android. Ini dibantu oleh Ministro yang akan mengunduh library Qt untuk Android.

Saya belum menjelajah sampai jauh utuk mencari tahu seberapa potensialnya Qt dipakai untuk mengembangkan aplikasi Android. Tapi jika googling, pasti kita akan menemukan banyak sekali pembahasan mengenai ini. Sejauh ini bisa saya simpulkan bahwa untuk pengembangan aplikasi Android dengan Qt, banyak developer yang lebih memilih QML daripada Qt widget. Bahkan contoh program Ubuntu SDK untuk Ubuntu Touch juga ditulis dalam QML.

Terlepas dari itu, saya kira Java tetaplah yang paling pantas untuk pengembangan aplikasi Android. Google juga menyatakan bahwa kita memang berpeluang untuk menggunakan bahasa C++ tapi jangan karena kita lebih suka dengan C++. Kode natif memang lebih powerful untuk mengakses fitur hardware, tapi akses ke API Android tidak banyak. Oleh karena itu, ada yang menyatakan, jika kita hanya akan sekali saja membuat aplikasi untuk Android, memakai Qt tidak masalah. Tapi jika berencana untuk membuat banyak aplikasi, tentunya Java lebih diutamakan.
Continue reading “Aplikasi Android dengan Pustaka Qt Framework”

Aplikasi Android dengan Pustaka Qt Framework

Building Qt Framework from Source (Windows) dan Deploy Project-nya

Mengompilasi Kode Sumber Qt di Windows 7

Kali ini saya berbagi cara instalasi Qt Framework dengan megompilasi sendiri kode sumbernya. Tujuannya adalah mendapatkan hasil aplikasi yang sesuai dengan keinginan kita, dalam hal ini kebutuhan untuk deploy.

Pertama tentunya unduh kode sumber Qt di sini, cari yang ZIP ‘for Windows’, kira-kira berukuran 280-an MB (Qt 5.3).

Sediakan prasyarat

Sesuai dengan dokumentasi resmi ada di sini, kita membutuhkan:

  1. ActivePerl – Install a recent version of ActivePerl (download page) and add the installation location to your PATH.
  2. Python – Install Python from here and add the installation location to your PATH in order to be able to build Qt WebKit.
    • Jika kita memilih installer MSI, instal python dengan perintah msiexec /i python.msi di cmd dengan akses administrator.
  3. Install Ruby from here and add the installation location to your PATH in order to be able to build Qt WebKit.

Tentunya MSVC harus sudah terinstal. Saya menginstal MS Visual Studio C++ 2010 Express. Jika belum punya, unduh file installer dari sini.

Alternatif dari MSVC adalah MinGW. Tapi tidak saya bahas di sini, karena saya pun belum pernah mencobanya.

Continue reading “Building Qt Framework from Source (Windows) dan Deploy Project-nya”