CMake ile Çalışmak #1

C++Derleme |

CMake, açık kaynak, çapraz platform bir derleme, test etme ve paketleme aracı ailesidir.

Derleme, Test, Paketleme

Çeşitli derleyicilerin, çeşitli kodlarını öğrenmek ve uygulamak oldukça zaman alan ciddi bir iştir. Ayrıca bu alanda yoğun bilgi birikimine sahip olanlarımız bile çok fazla hata yapmaktadır.

Modern bir yazılım oluşturmak için her zaman kod odaklı olmak vazgeçilmezimizdir. Verimlilik, ancak sadece kodlarla ilgilenmeye başladığınızda kendini gösterebilir. Bazen yazdığınız kodu derlemek için kendi Makefile'ınızı yazmak oldukça kasvetli, can sıkıcı ve gerçekten bir o kadar da motivasyonu bozan bir işlem olabilir. CMake bu noktada devreye girip Makefile dosyalarınızı kendisi yazar.

CMake'in temel avantajlarıyla başlayalım:

  • Kolay öğrenilir
  • Çapraz platformdur
  • Evrenseldir
  • Açık kaynak projelerin birçoğu CMake kullanır
  • Organizasyonu sağlar
  • Odağınızın derleme, test etme, paketleme, linker, kütüphaneler vb. gibi onlarca konuya değil, doğrudan koda kaymasını sağlar

CMake adeta bir derleme otomasyonu sistemidir. Otomasyon kelimesi karmaşık gelmesin. CMake karmaşık işleri basite indirgemek, organizasyonu artırmak için geliştirilmiş bir araçtır.

Başlangıç

NOT

CMake, ``CMakeLists.txt`` dosyalarını parseller ve sonuç üretir.

Proje dizininizin içinde bir CMakeLists.txt dosyası oluşturun.

# proje adı
project(MathSolver)

# minimum cmake sürümü
cmake_minimum_required(VERSION 2.8)

# çalıştırılabilir dosya (executable) oluşturun
add_executable(MathSolver mathsolver.cpp integral.cpp derivative.cpp)

Oluşturduğunuz dosyaya versiyon numarası da ekleyebilirsiniz.

set(MathSolver_VERSION_MAJOR 1)
set(MathSolver_VERSION_MINOR 0)

Dahil edilecek dosyaların aranacağı yolları eklemek için (include path)

include_directories(include_dir)

Kütüphane eklemek için

# static library
add_library(MathSolver STATIC FxParser)

# shared library
add_library(MathSolver SHARED FxParser)

# module library
add_library(MathSolver MODULE FxParser)

STATIC Yalnızca derleme zamanında doğrudan gömülebilen kütüphane
SHARED Derleme zamanında linklenebilen ve çalışma zamanında yüklenebilen kütüphane
MODULE Derleme zamanında linkleme olmaksızın, çalışma zamanında ihtiyaç hâlinde yüklenebilen kütüphane

#2. yazının konuları:

  • seçenekler
  • mantıksal operatörler
  • değer atama
  • alt proje klasörü oluşturma