Meson kullanarak Budgie uygulamalarını derleme
Bu ders içerik olarak Budgie masaüstü uygulamalarını derlemek dersinin aynısıdır.
Ancak kolay bir şekilde Meson kullanarak nasıl Budgie uygulamalarının derlenebileceği anlatılmaya çalışılmıştır.
Budgie uygulamalarını, tüm kullanıcılar için /usr/lib/budgie-desktop/plugins dizininde, tek bir kullanıcı için ise ~/.local/share/budgie-desktop/plugins dizininde oluşturmak gerekiyor.
Sınamalarımıza göre /usr/local/lib/budgie-desktop/plugins/ dizininde de uygulama oluşturulabiliyor.
Bir Budgie uygulaması, Vala için *.so uzantılı paylaşılan bir kütüphane ve *.plugin uzantılı bir eklentiden oluşuyor.
Budgie uygulamasının bir parçası olacak şekilde arzu edersek pencereli bir Gtk uygulaması da geliştirebiliriz.
Arka planda çalışan Budgie uygulaması, pencereli uygulamayı çağırabilir.
Öncelikle bu ders için uygulamanın kaynak kodunu indiriniz.
Ana dizindeki meson.build isimli Meson kütüğüne baktığımızda bazı değişken tanımlamaları görebilirsiniz.
project('selam', 'vala', 'c')
gnome = import('gnome')
uygulamaIsmi = meson.project_name()
kok = get_option('prefix')
message('Kök dizini = ' + kok)
kutuphaneDizini = join_paths(kok, get_option('libdir'))
message('Kütüphane dizini = ' + kutuphaneDizini)
kurulumDizini = join_paths(kutuphaneDizini, 'budgie-desktop', 'plugins', 'selam')
message('Kurulum dizini = ' + kurulumDizini)
subdir('kaynak')
Bunlardan en önemlilerinden bir tanesi prefix kelimesi ile gösterilen kök dizinidir.
Meson kurulum betiğini aşağıdaki gibi çalıştıralım.
meson setup oluştur
Burada bu değişkenlerin ekrana yazıldığını görebiliriz.
Message: Kök dizini = /usr/local
Message: Kütüphane dizini = /usr/local/lib
Message: Kurulum dizini = /usr/local/lib/budgie-desktop/plugins/selam
Eğer istersek derleme dizini sildikten sonra farklı bir kök dizini belirtebiliriz.
rm -rf oluştur/
meson setup --prefix=/usr oluştur
Değişkenlerin ve dolayısıyla kurulum dizininin değiştiğini görebilirsiniz.
Message: Kök dizini = /usr
Message: Kütüphane dizini = /usr/lib
Message: Kurulum dizini = /usr/lib/budgie-desktop/plugins/selam
join_paths isimli işlev ise farklı dizinleri birleştiriyor.
Alt dizine geçmek için subdir komutunu kullanıyoruz.
kaynak isimli dizine geçtiğimizde ise meson.build ismi ile bir meson kütüğü olduğunu görebiliriz.
İçeriği sadece aşağıdaki gibidir.
subdir ('selam')
Yani selam dizinine geç diyor.
Neden böyle yaptığımız düşünülebilir.
Nedenine gelince selam dizininde sadece geliştirmek istediğimiz Budgie uygulamasının kaynak kodları olabilir.
İleride örneğin selamla isimli bir Gtk masa üstü uygulaması geliştirmek istediğimizi düşünelim.
Dizinleri ayırarak, geliştirme işini büyük ölçüde birbirinden bağımsız hale getirmek isteyebiliriz.
Tekrar selam dizinine geçtiğimizde temel meson kütüğünü meson.build ismi ile bulabiliriz.
install_data(
'Selam_.plugin',
install_dir: kurulumDizini
)
gerekliPaketler = [
dependency('glib-2.0'),
dependency('gobject-2.0'),
dependency('gtk+-3.0'),
dependency('budgie-1.0')
]
shared_library('selam',
'selam.vala',
dependencies: gerekliPaketler,
install: true,
install_dir: kurulumDizini)
install_data komutu eklenti kütüğünü belirttiğimiz kurulum dizinine kuruyor.
Bu komutla çalıştırılabilir kabuk betiklerini de kurabiliriz.
En alttaki shared_library anahtar kelimesi müşterek bir kütüphane üretmek istediğimizi belirtiyor.
Vala ile müşterek ortak kütüphane oluşturmak için bu derse bakabilirsiniz.
Uygulamanın kaynağını buradan indirebilirsiniz.
Eğer git kullanarak indirmek indirmek isterseniz
git clone https://codeberg.org/erdem/rizeden.git --branch Ders9
komutu ile bu dersi indirebilirsiniz.
rizeden dizinin içine giriniz.
cd rizeden
Öncelikle derleme yapacağımız dizini oluşturuyoruz.
meson setup oluştur
Sonra bu oluşturduğumuz dizine girelim.
cd oluştur/
Burada uygulamayı derleyip kurmak için
sudo ninja install
komutunu verebilirsiniz.
Uygulamayı kaldırmak için aynı dizinin içinde
sudo ninja uninstall
komutu vermek yeterlidir.
Eklentiyi tanıtmak için aşağıdaki komutu verelim.
budgie-panel --replace &
Eğer bir hata vermezse eklentimiz kurulacaktır.
Eklentiyi etkinleştirmek için bu bölümü okuyunuz.
Yorumlar