Pembuatan Aplikasi Cross Platform Dengan Menggunakan C dan CMake

Pembuatan Aplikasi Cross Platform Dengan Menggunakan C dan CMake

Dalam artikel ini, kita akan membahas cara membuat aplikasi lintas platform dengan menggunakan C dan CMake.

John Doe
John Doe

Tahun 2024, dan tetap saja C menjadi salah satu bahasa pemrograman yang paling banyak digunakan. Walau banyak yang merasa bahwa bahasa pemrograman ini sudah ketinggalan zaman, namun kenyataannya masih banyak aplikasi yang ditulis menggunakan bahasa ini. Bahkan, C masih menduduki peringkat 5 besar dalam daftar bahasa pemrograman yang paling banyak digunakan menurut TIOBE Index.

C dan pemrograman lintas platform

Salah satu keunggulan dari C adalah kemampuannya untuk berjalan di berbagai platform. Berbeda dengan bahasa pemrograman lain seperti Java yang mengharuskan kita untuk menggunakan JVM yang nantinya dijalankan di atas sistem operasi yang berbeda, C tidak memiliki ketergantungan kepada mesin virtual layaknya JVM. Kompatibilitas C adalah di level kode sumber. Sehingga, untuk membuat aplikasi yang jalan di berbagai platform, kita perlu mengkompilasi kode sumber tersebut untuk platform target.

graph subgraph "Java Compilation and Execution" A[Java] --javac--> B(Compiled to Bytecode) B --archiver--> C{.jar Package} C --> D[JVM on Windows] C --> E[JVM on Mac] C --> F[JVM on Linux] end subgraph "C Compilation and Execution" G[C] --MSVC/MingW--> EXE G --GCC/Clang--> ELF G --Clang--> MACH EXE{{"PE (Portable Executable)"}} ELF{{"ELF (Executable Linkable Format)"}} MACH{{"Mach-O (Mach Object Format)"}} EXE --> I[Runs Natively on Windows] ELF --> J[Runs Natively on Mac] MACH --> K[Runs Natively on Linux] end

Untuk membuat aplikasi yang portabel seperti di atas, kita terkadang perlu untuk menulis Makefile atau project file yang berbeda-beda untuk setiap platform. Hal ini tentu saja memakan waktu dan tenaga. Untungnya, ada sebuah alat yang dapat membantu kita untuk membuat aplikasi lintas platform dengan mudah, yaitu CMake.

CMake

CMake adalah sebuah alat yang digunakan untuk mengotomatisasi proses kompilasi. Dengan CMake, kita dapat membuat satu set instruksi yang dapat digunakan untuk menghasilkan file project untuk berbagai platform. CMake sendiri tidak mengkompilasi kode sumber, melainkan hanya menghasilkan file project yang dapat digunakan oleh kompiler. CMake sendiri menggunakan file konfigurasi yang disebut CMakeLists.txt yang berisi instruksi-instruksi yang diperlukan untuk menghasilkan file project.

Aplikasi C yang akan kita buat kali ini adalah aplikasi yang sangat sederhana. Aplikasi ini akan kita beri nama hello-world. Aplikasi ini akan mencetak pesan Hello, World! ke layar. Kita akan membuat aplikasi ini agar dapat berjalan di Windows, Mac, dan Linux.

#include <stdio.h>

int main(void) {
    printf("Hello, World!\n");
    return 0;
}

Untuk membuat aplikasi ini, kita perlu membuat sebuah file CMakeLists.txt yang berisi instruksi untuk menghasilkan file project. Berikut adalah isi dari file CMakeLists.txt yang kita buat:

# Set versi minimum CMake yang diperlukan
cmake_minimum_required(VERSION 3.0)

# Set nama project
project(hello-world)

# Tambahkan berkas kode sumber 
add_executable(hello-world main.c)

Setelah kita membuat file CMakeLists.txt, kita dapat menggunakan CMake untuk menghasilkan file project. Untuk menghasilkan file project. Caranya sedikit berbeda untuk setiap platform. Berikut adalah cara untuk menghasilkan file project untuk setiap platform:

Windows

Untuk menghasilkan file project untuk Windows, kita perlu menggunakan Command Prompt atau PowerShell. Dan pastikan bahwa CMake sudah terpasang di sistem kita. Disarankan untuk menggunakan Microsoft Visual Studio terbaru (saat ini, Visual Studio 2022).

Pertama-tama kita buka dulu "Developer Command Prompt for VS 2022" atau "Developer PowerShell for VS 2022". Kemudian, kita masuk ke direktori dimana kita menyimpan file CMakeLists.txt dan kode sumber kita.

Saya biasanya membuat direktori baru untuk menyimpan file project yang dihasilkan oleh CMake. Untuk ini, saya akan membuat direktori baru bernama .build di dalam direktori dimana saya menyimpan file hasil kompilasi. Setelah itu, saya masuk ke direktori .build tersebut.

mkdir .build
cd .build

Setelah itu, kita jalankan perintah berikut untuk menghasilkan file project:

cmake -G "Visual Studio 17 2022" ..

Perintah di atas akan menghasilkan file project untuk Visual Studio 2022. Berkas project yang dihasilkan adalah sebuah berkas dengan ekstensi .sln yang dapat kita buka menggunakan Visual Studio 2022. Di situ kita bisa mengkompilasi, men-debug, dan mengeksekusi aplikasi kita.

Ada juga cara kedua yang menghasilkan berkas project yang dapat dipakai untuk mengkompilasi aplikasi yaitu NMake Makefiles. NMake adalah alat yang dipasang bersama dengan Visual Studio dan gunanya untuk membangun aplikasi dari baris perintah. Untuk menghasilkan berkas project yang menggunakan NMake, kita dapat menggunakan perintah berikut:

cmake -G "NMake Makefiles" ..

Lalu, kita dapat menggunakan perintah nmake untuk mengkompilasi aplikasi kita.

nmake

Hasil aplikasinya adalah sebuah berkas dengan ekstensi .exe yang dapat kita jalankan di Windows.

Mac

Untuk menghasilkan file project untuk Mac, kita perlu menggunakan Terminal. Pastikan bahwa CMake sudah terpasang di sistem kita. Dan pastikan juga bahwa Xcode sudah terpasang di sistem kita. Xcode adalah perangkat pengembangan aplikasi untuk Mac yang dibuat oleh Apple yang bisa kita unduh dari App Store.

CMake dapat kita pasang dengan menggunakan Homebrew. Homebrew adalah sebuah alat yang digunakan untuk mengelola paket-paket di Mac. Untuk memasang CMake, kita dapat menggunakan perintah berikut:

brew install cmake

Setelah CMake terpasang, kita masuk ke direktori dimana kita menyimpan file CMakeLists.txt dan kode sumber kita. Saya biasanya membuat direktori baru untuk menyimpan file project yang dihasilkan oleh CMake. Untuk ini, saya akan membuat direktori baru bernama .build di dalam direktori dimana saya menyimpan file hasil kompilasi. Setelah itu, saya masuk ke direktori .build tersebut.

mkdir .build
cd .build

Setelah itu, kita jalankan perintah berikut untuk menghasilkan file project:

cmake -G "Xcode" ..

Perintah di atas akan menghasilkan file project untuk Xcode. Berkas project yang dihasilkan adalah sebuah berkas dengan ekstensi .xcodeproj yang dapat kita buka menggunakan Xcode. Sama dengan Visual Studio di Windows, di situ kita bisa mengkompilasi, men-debug, dan mengeksekusi aplikasi kita.

Selain Xcode, kita juga dapat menggunakan Makefile untuk menghasilkan berkas project. Untuk menghasilkan berkas project yang menggunakan Makefile, kita dapat menggunakan perintah berikut:

cmake -G "Unix Makefiles" ..

Lalu, kita dapat menggunakan perintah make untuk mengkompilasi aplikasi kita.

make

Hasil aplikasinya adalah sebuah berkas yang dapat kita jalankan di Mac.

./hello-world

Linux

Untuk menghasilkan file project untuk Linux, kita perlu menggunakan Terminal. Pastikan bahwa CMake sudah terpasang di sistem kita. CMake dapat kita pasang dengan menggunakan manajer paket yang ada di sistem operasi kita. Untuk Ubuntu, kita dapat menggunakan perintah berikut:

sudo apt install cmake

Setelah CMake terpasang, kita masuk ke direktori dimana kita menyimpan file CMakeLists.txt dan kode sumber kita. Saya biasanya membuat direktori baru untuk menyimpan file project yang dihasilkan oleh CMake. Untuk ini, saya akan membuat direktori baru bernama .build di dalam direktori dimana saya menyimpan file hasil kompilasi. Setelah itu, saya masuk ke direktori .build tersebut.

mkdir .build
cd .build

Setelah itu, kita jalankan perintah berikut untuk menghasilkan file project:

cmake -G "Unix Makefiles" ..

Sama dengan Mac, yang berbasis Unix, kita dapat menggunakan perintah make untuk mengkompilasi aplikasi kita.

make

Hasil aplikasinya adalah sebuah berkas yang dapat kita jalankan di Linux.

./hello-world

Kesimpulan

Dalam artikel ini, kita telah membahas cara membuat aplikasi lintas platform dengan menggunakan C dan CMake. Dengan menggunakan CMake, kita dapat membuat aplikasi yang dapat berjalan di berbagai platform dengan mudah. Dengan CMake, kita tidak perlu lagi menulis Makefile atau project file yang berbeda-beda untuk setiap platform. Cukup dengan satu set instruksi yang kita tulis di dalam file CMakeLists.txt, kita dapat menghasilkan file project untuk berbagai platform.

Dengan demikian, kita dapat fokus untuk menulis kode sumber tanpa perlu khawatir dengan proses kompilasi. Dengan CMake, kita dapat membuat aplikasi lintas platform dengan mudah.

security
C
CMake

Previous Article

Reference Counting: Cara Cocoa, WinRT, dan COM Mengelola Memori Objek
Reference Counting: Cara Cocoa, WinRT, dan COM Mengelola Memori Objek

Artikel ini membahas tentang teknik reference counting yang digunakan dalam tiga framework berbeda: Cocoa untuk pengembangan aplikasi di platform Apple, WinRT untuk pengembangan aplikasi di platform Windows, dan Component Object Model (COM) yang digunakan dalam sistem operasi Windows. Kami akan membahas bagaimana ketiga framework ini menggunakan reference counting untuk mengelola memori objek dan membantu menghindari kebocoran memori.

Next Article

Terminasi Proses Yang Benar di Linux
Terminasi Proses Yang Benar di Linux

Banyak orang yang mematikan proses di Linux dengan menggunakan perintah `kill` dengan tidak benar. Padahal, ada cara yang lebih baik untuk melakukan terminasi proses di Linux.

Subscribe Kanal Koding Aja Dulu!

Berlangganan ke channel YouTube kami dan dapatkan akses ke tutorial terbaru, tips, dan trik pemrograman sistem, microservices, dan low level programming.

Subscribe Sekarang