Penyiapan lingkungan

Memasang compiler g++, memilih editor, dan pengenalan awal CMake sebagai build system.

Daftar isi

Topik ini menyiapkan lingkungan pengembangan C++ dari awal, mulai dari pemasangan compiler g++, pemilihan editor, sampai pengenalan CMake sebagai build system. Seluruh tahapan diakhiri dengan program percobaan kecil yang dikompilasi dan dijalankan, sehingga keberhasilan penyiapan benar-benar teruji dan bukan sekadar diasumsikan. Lingkungan yang siap menjadi bekal untuk mengikuti seluruh contoh kode pada jalur ini.

Memasang compiler g++#

Compiler menerjemahkan kode sumber menjadi kode mesin, dan compiler yang dipakai sepanjang jalur ini adalah g++, yaitu antarmuka GCC (GNU Compiler Collection) untuk bahasa C++. Ketika g++ dipanggil, berkas berekstensi .cpp diperlakukan sebagai kode C++, dan pustaka standar C++ ditautkan secara otomatis ke program hasilnya.

Pada sebagian besar distribusi Linux, g++ tidak terpasang secara bawaan, sedangkan Windows dan macOS memerlukan pemasangan terpisah melalui MSYS2 atau Homebrew. Perintah pemasangannya bergantung pada sistem operasi yang dipakai. Salah satu perintah berikut dijalankan sesuai sistem tersebut.

bash
# tidak-dijalankan (perintah instalasi dijalankan di lingkungan pembaca masing-masing)
# Debian dan Ubuntu: paket build-essential memuat g++ dan make
sudo apt install build-essential
# Fedora: paket gcc-c++ memuat g++
sudo dnf install gcc-c++
# Windows: jalankan dari shell MSYS2 UCRT64
pacman -S mingw-w64-ucrt-x86_64-gcc
# macOS: pasang melalui Homebrew
brew install gcc

Keberhasilan pemasangan diperiksa dengan memanggil g++ dan meminta nomor versinya.

bash
# periksa versi g++ yang terpasang
g++ --version
text Keluaran
g++ (Debian 14.2.0-19) 14.2.0
Copyright (C) 2024 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Keluarannya pasti berbeda antar sistem operasi dan antar versi paket. Baris pertama menjadi acuan karena memuat nomor versi g++, misalnya 14.2.0 pada contoh di atas. Angka versi ini menentukan kelengkapan dukungan fitur standar terbaru, dan rincian dukungannya dapat ditelusuri pada referensi di akhir topik.

Memilih editor#

Alat penyuntingan untuk C++ terbagi dua kelas, yaitu editor teks yang diperluas dengan ekstensi dan IDE (integrated development environment) yang lengkap. Keduanya sah, dan pilihannya mengikuti kebutuhan. Kriteria minimum yang sama perlu dipastikan untuk keduanya, yaitu penyorotan sintaks C++, penyelesaian otomatis yang membaca header pustaka standar, navigasi antarberkas, dan akses ke compiler serta debugger.

KriteriaEditor teks dengan ekstensiIDE lengkap
Ukuran dan kecepatan bukaRingan dan cepatLebih berat karena banyak fitur terpasang
Penyorotan dan penyelesaian C++Melalui ekstensiSudah bawaan
Debugger terintegrasiMelalui ekstensi debuggerSudah bawaan
Paling cocok untukPembelajaran dan proyek kecilProyek besar dengan banyak berkas

Apa pun pilihannya, terminal tetap diperlukan. Setiap contoh pada jalur ini dijalankan lewat perintah kompilasi yang diketik langsung, sehingga pemahaman atas proses build lebih dulu dibangun di terminal, sedangkan editor hanya bertugas menyunting kode. Kebiasaan ini juga memudahkan pemindahan ke server tanpa antarmuka grafis, karena seluruh alur kerja itu tidak bergantung pada satu IDE tertentu.

Program percobaan pertama#

Rantai alat yang terpasang diuji dengan program terkecil yang mungkin, yaitu program yang mencetak satu baris teks. Program sekecil ini cukup untuk menguji compiler, linker (penyambung berkas hasil kompilasi dengan pustaka), dan pustaka standar sekaligus. Buat berkas bernama halo.cpp di direktori kerja dengan isi berikut.

cpp halo.cpp
#include <iostream>

int main() {
    std::cout << "Lingkungan C++ siap digunakan\n";
    return 0;
}
text Keluaran
Lingkungan C++ siap digunakan

Kode sumber belum dapat dijalankan sebelum diterjemahkan menjadi kode mesin. Kompilasi dilakukan dengan perintah berikut.

bash
# kompilasi halo.cpp menjadi program bernama halo
g++ halo.cpp -o halo

Perintah di atas berjalan tanpa mencetak apa pun ketika berhasil, dan keberhasilannya ditandai munculnya berkas baru bernama halo di direktori kerja. Opsi -o halo menetapkan nama program hasil kompilasi. Setelah berkas halo muncul, program tersebut dijalankan dengan perintah berikut.

bash
# jalankan program hasil kompilasi
./halo
text Keluaran
Lingkungan C++ siap digunakan

Awalan ./ menyatakan bahwa program yang dimaksud berada di direktori kerja saat ini. Awalan itu diperlukan karena direktori tersebut tidak termasuk daftar pencarian perintah (PATH). Keluaran yang muncul persis seperti yang diperkirakan menandakan compiler, linker, dan pustaka standar bekerja dengan benar. Satu hal yang perlu digarisbawahi, yaitu kompilasi perlu diulang setiap kali kode sumber berubah, karena berkas program tidak mengikuti isi kode sumber secara otomatis sebagaimana bahasa skrip.

Pengenalan CMake#

Satu perintah g++ memang cukup untuk program satu berkas, tetapi proyek nyata terdiri atas banyak berkas, bergantung pada pustaka luar, dan memerlukan konfigurasi berbeda antara mode debug dan rilis. Mengetik ulang perintah panjang setiap kali kode berubah memboroskan waktu dan mudah salah. Tugas itu diserahkan pada build system, yaitu alat yang menjalankan langkah pembangunan berdasarkan deskripsi yang ditulis sekali.

CMake adalah build system yang paling lazim dipakai untuk C++. CMake tidak mengompilasi program secara langsung, melainkan membaca deskripsi proyek bernama CMakeLists.txt lalu menghasilkan berkas build untuk alat yang tersedia di sistem, misalnya Makefile untuk make. Deskripsi CMakeLists.txt untuk program halo di atas berbentuk berikut.

cmake Contoh: CMakeLists.txt minimal
# tidak-dijalankan (potongan untuk dibaca; proyek CMake dijalankan pada lingkungan yang memilikinya)
cmake_minimum_required(VERSION 3.16)
project(halo LANGUAGES CXX)

add_executable(halo halo.cpp)

Baris cmake_minimum_required menetapkan versi CMake terendah yang dapat memproses berkas tersebut, project memberi nama proyek, dan add_executable menyatakan bahwa program bernama halo dibangun dari halo.cpp. Langkah pembangunannya dijalankan melalui dua perintah berikut, sedangkan perintah terakhir menjalankan program hasilnya.

bash
# tidak-dijalankan (cmake tidak terpasang di lingkungan eksekusi contoh; langkah ini berlaku di sistem dengan CMake)
# hasilkan berkas build di direktori build
cmake -B build
# bangun program lewat berkas build yang dihasilkan
cmake --build build
# jalankan programnya
./build/halo

CMake tidak selalu terpasang secara bawaan, sedangkan make lebih sering sudah tersedia di Linux dan macOS. Proyek kecil pun dapat dibangun langsung dengan make melalui berkas Makefile tulisan tangan tanpa CMake sama sekali. Pada Linux, CMake secara bawaan menghasilkan Makefile, sehingga keduanya biasanya bekerja berpasangan, dengan CMake sebagai penulis deskripsi dan make sebagai pelaksananya.

Kesalahan umum#

  1. Perintah g++ tidak ditemukan. Terminal menampilkan command not found ketika g++ dipanggil. Penyebabnya compiler belum terpasang, atau lokasinya belum masuk ke variabel PATH, yang sering terjadi pada Windows setelah pemasangan MSYS2. Perbaikannya berupa pemasangan paket compiler sebagaimana dijelaskan pada bagian awal, lalu pemeriksaan ulang dengan g++ --version.
  2. Hasil kompilasi bernama a.out. Perintah g++ halo.cpp tanpa opsi -o menghasilkan berkas bernama a.out, yaitu nama bawaan yang tidak menceritakan isi programnya. Penyebabnya adalah kelalaian memberi nama keluaran. Perbaikannya berupa kebiasaan menyertakan -o beserta nama program pada setiap perintah kompilasi.
  3. Program lama yang masih dijalankan. Perubahan pada halo.cpp tidak berpengaruh pada berkas halo yang sudah ada sebelum kompilasi ulang, sehingga program yang dijalankan memuat perilaku lama. Penyebabnya adalah anggapan bahwa kompilasi berjalan otomatis seperti pada bahasa skrip. Perbaikannya berupa pengulangan perintah g++ setiap kali kode sumber berubah, atau penyerahan tugas itu pada build system seperti CMake dan make.

Ringkasan#

  • Compiler g++ dipasang melalui paket sistem operasi masing-masing, dan keberhasilannya diperiksa dengan g++ --version.
  • Pola kompilasi dasarnya adalah g++ halo.cpp -o halo, dan program hasilnya dijalankan dengan ./halo dari direktori kerja.
  • Editor teks berekstensi maupun IDE lengkap sama-sama sah, sedangkan terminal tetap diperlukan untuk memahami proses build.
  • CMake membaca CMakeLists.txt lalu menghasilkan berkas build seperti Makefile, dengan make sebagai alat pelaksana yang lebih sering tersedia secara bawaan.

Referensi#