C++ Paket Yöneticisi

kondanta

Katılımcı Üye
29 Tem 2017
910
0
CNCF

Arkadaşlar merhaba, geçtiğimiz günlerde Microsoft Vcpkg adında c++ paket yöneticisini duyurdu.

Q: Peki paket yöneticisi nedir ?
Paket yöneticisi, bir çok high level languageda bildiğiniz, başka insanların yazdığı kütüphaneleri direkt olarak kendi projenizde kullanmanıza yardımcı olan toollardır. Bunların en büyük iki örneği, python için pip, node.js için ise npmdir.


Yaklaşık iki releasedir (c++ 14 ve c++17) topluluk olarak c++'a modules özelliği beklemekteyiz. Modules ne derseniz import something from somelib şeklinde kütüphane eklemek diyebilirim. Ancak bunca zamandır kimsenin dillendirmediği ama içten içe, bu kadar süredir var olan bi dilde neden paket yöneticisi olmaz ki sorduğu bu konuya microsoft bi çözüm getirmiş oldu.

Bu arada not düşeyim, GSL (guideline support library) de microsoftdan çıkma, lakin vcpkg da gsl de "resmi" dememiz için daha zaman var gibi.

Şimdi gelelim vcpkg nedir nasıl çalışır. Kurmak istesem nasıl kurarım kısmına. Ben burada sadece Linux kurulumuna değineceğim, çünkü elimde size karşılığını gösterebileceğim bir windows makine yok. Açıkcası bunun için de VM kurmak zor geldi.

Başlamadan önce, programı düzgünce kurabilmeniz için belli başlı ön koşullar bulunmakta. Aşağıda bahsi geçecek olan toolların makinanızda hali hazırda kurulu olması beklenmekte. Bu toolar:
  • Git *linux içerisinde zaten gömülü gelmekte ..*
  • Cmake > 3.10.2

Şimdi kurulum kısmı. Öncelikle bu kütüphaneyi nereye kuracaksanız "cd" ile oraya geçiyoruz. Şahsen ben tools/ klasörümü kullanıyorum böyle şeyler için.
Kod:
# kurmak istediğimiz lokasyona giriyoruz
$ cd ~/tools
$ git clone https://github.com/Microsoft/vcpkg
$ cd vcpkg
$ ./bootstrap-vcpkg.sh

# kurulum bittikten sonra, tüm sistemde kullanabilmemiz için symlink yaratmamız lazım, lakin vcpkg de bu düşünülmüş.

./vcpkg integrate install
# bu komutu kullandıktan sonra bizim için gerekli linkleme işlemini kendisi halletmekte.

Bu işlemi de hallettikten sonra, sisteminizin herhangi bir yerinde vcpkg yazarak binary dosyasına erişim sağlayabiliyor olacaksınız.

Not2: Vcpk kurulum yapılan klasörü kendine root olarak tanımlamakta.
Yani bundan sonra indireceğiniz tüm kütüphaneler başta kurulum yaptığınız, benim örneğimde tools/ idi, bu klasör içerisinde "installed" adlı klasörün içinde olacaktır.


Örneğin:

Kütüphane ararken
tht1.png


Kurulum yaparken
tht2.png


Kütüphaneyi silerken
tht3.png

Uyarı: Paketi silerken --recurse kullanmamın sebebi, alttaki logda da görüldüğü üzere, sqlite3 ü kullanan başka bir kütüphane daha kurulu oluşundan kaynaklı. Eğer ana kütüphaneyi sileceksen, onu kullanan sub kütüphaneleri de sil,
diye dayatıyor vcpkg.



Yukarıda bahsi geçen konudan bağımsız açıklama:
Eğer ilginizi çekerse, konuda bahsi geçen GSL kütüphanesi hakkında da, açıklayıcı bir yazı yazabilirim. C++ standartlarında kullanmanız gerektiği savunulan fonksiyonlar içermekte. Bunların başında gelenler -> owner<>, span<> ve string_view fonksiyonları.


 
Son düzenleme:
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.