Spack vs Conan vs vcpkg 2026: C++ Package Manager Production — Görsel 1
Spack vs Conan vs vcpkg 2026: C++ Package Manager Production — Görsel 1

C++ ekosisteminde paket yönetimi, uzun yıllar boyunca dağınık ve standartsız bir alan olarak kaldı. JavaScript’in npm’i, Python’un pip’i, Rust’un cargo’su gibi dominant bir araç oluşamamıştı. Ancak 2025-2026 döneminde Spack, Conan ve vcpkg üç güçlü oyuncu olarak öne çıktı ve C++ paket yönetimi disiplini somut bir şekilde mümkün hale geldi. Stack Overflow Survey 2025 verilerine göre C++ kullanan kuruluşların yüzde 38’i artık dedicated bir paket yöneticisi kullandığını bildirdi; bu rakam 2022’de yüzde 14’tü.

Üç araç farklı dünyalardan geliyor. Spack, HPC (High Performance Computing) ve bilimsel hesaplama dünyasının ihtiyaçlarından doğdu; Lawrence Livermore National Laboratory’de geliştirildi. Conan, JFrog tarafından geliştirilen ve enterprise C++ dünyasına hitap eden Python-tabanlı bir paket yöneticisi. vcpkg ise Microsoft tarafından açık kaynak olarak yayımlanan ve Visual Studio entegrasyonuyla öne çıkan bir araç. Bu yazıda üç aracı mimari, paket olgunluğu, build sistemleri entegrasyonu ve kurumsal benimseme açısından detaylı karşılaştırıyoruz.

Spack: HPC ve Bilimsel Hesaplama Odaklı

Spack, “Supercomputer Package” kelimelerinin kısaltması. Felsefesi, aynı paketin farklı varyantlarını yan yana kurabilmektir. Bilimsel hesaplama dünyasında bir paketin farklı derleyici versiyonları (gcc 11, gcc 12, intel), farklı MPI implementasyonları (OpenMPI, MPICH), farklı build option’ları ile birlikte kurulması gerekiyordu. Spack bu ihtiyaca cevap vermek için tasarlandı.

Spack vs Conan vs vcpkg 2026: C++ Package Manager Production — Görsel 2
Spack vs Conan vs vcpkg 2026: C++ Package Manager Production — Görsel 2

Spack’in en güçlü yanı dependency solving kabiliyetidir. spack install komutu, transitive dependency’leri otomatik çözer ve concretization adımıyla net bir build plan oluşturur. Spack 0.22 sürümünden itibaren Clingo (ASP solver) tabanlı yeni concretizer varsayılan oldu ve büyük dependency graph’leri hızlı çözebiliyor.

Conan: Enterprise C++ Paket Yöneticisi

Conan, 2016’da yayımlanan ve 2.0 sürümüyle (2023) önemli bir mimari yenileme geçiren bir paket yöneticisi. Conan Center, ConanCenter.io üzerinde 1500’den fazla resmi paket barındırıyor ve aktif olarak güncelleniyor. Conan’ın temel kavramları “recipe” ve “profile”dur. Recipe, bir paketin nasıl build edildiğini Python kodu olarak ifade eder; profile, hedef platform ve compiler ayarlarını tanımlar.

Conan 2.0 ile gelen en önemli yenilik, package_id hesaplamasının yenilenmesi ve graph lock formatının modernleştirilmesi oldu. Aynı recipe’nin farklı compiler/platform kombinasyonları için ayrı binary’leri Conan Center veya kuruluşun kendi Artifactory repository’sinde tutulabiliyor. Bu pattern, build sürelerini dramatik biçimde azaltıyor.

vcpkg: Microsoft’un C++ Paket Yöneticisi

vcpkg, 2016’da Microsoft tarafından açık kaynak olarak yayımlandı. Visual Studio ve CMake ile derin entegrasyon sunan, kullanım kolaylığına odaklanan bir araç. vcpkg’nin felsefesi, “manifest mode” ile projede vcpkg.json dosyası tutmak ve build sırasında bağımlılıkların otomatik kurulmasını sağlamaktır.

vcpkg, 2200’den fazla port (paket recipe’si) içeriyor. Microsoft’un kendi standart kütüphaneleri (CppRestSDK, GSL gibi) yanında Boost, Qt, OpenSSL, Protobuf, gRPC gibi mainstream kütüphaneler de mevcut. vcpkg’nin Visual Studio ile native entegrasyonu, Windows dünyasında neredeyse standart hale geldi.

Üç Aracın Karşılaştırma Matrisi

Aşağıdaki tablo üç aracın temel özelliklerini yan yana karşılaştırıyor.

Özellik Spack Conan 2.0 vcpkg
Geliştirici/Sahibi LLNL (US Dept of Energy) JFrog Microsoft
Hedef kullanıcı HPC, bilim, akademi Enterprise C++ ekipleri Windows-first, cross-platform
Paket sayısı 7800+ 1500+ (Conan Center) 2200+ port
Recipe dili Python Python CMake + JSON manifest
Build sistemi entegrasyonu Spack environments CMake, Meson, Make, MSBuild CMake (toolchain file)
Binary caching S3/GCS upstream cache Artifactory, GitHub Packages Azure Blob, GitHub Packages
Çoklu compiler desteği Çok güçlü (varyant sistemi) Güçlü (profile sistemi) Orta (triplet sistemi)
Hedef platform Linux dominant, macOS limited Tüm platformlar Windows + Linux + macOS

Paket sayısı açısından Spack 7800+ paketle lider; HPC ekosisteminin ihtiyaçlarını karşılamak üzere bilim odaklı kütüphaneler (LAPACK, BLAS, PETSc, HDF5, NetCDF) eksiksiz bulunuyor. vcpkg 2200+ port ile mainstream C++ kütüphanelerinde olgun. Conan Center 1500+ paketle daha kısıtlı ama enterprise-quality paketlere odaklanıyor.

Build Sistemi ve CMake Entegrasyonu

2026 yılında C++ projelerinin baskın çoğunluğu CMake kullanıyor. Üç paket yöneticisinin CMake entegrasyonu farklı yaklaşımlarla gerçekleşiyor.

  • vcpkg: CMake toolchain file mekanizması; -DCMAKE_TOOLCHAIN_FILE=vcpkg.cmake parametresi ile bağımlılıklar otomatik bulunur
  • Conan: conan install komutu CMake generator (CMakeDeps + CMakeToolchain) üretir; find_package() çağrıları otomatik çalışır
  • Spack: spack load veya spack environment ile environment variables ayarlanır; CMake CMAKE_PREFIX_PATH üzerinden kütüphaneleri bulur
  • Hybrid yaklaşım: Bazı kuruluşlar farklı paket yöneticileri arasında köprü kuruyor; örneğin vcpkg toolchain + Conan binary cache
  • Meson entegrasyonu: Conan native destek sunuyor; Meson kullanıcıları için Conan en doğal seçim

CMake’in find_package() mekanizması, üç paket yöneticisinin de benimsediği ortak sözleşme. Modern CMake projelerinde target_link_libraries(myapp PRIVATE Boost::system) gibi import target syntax kullanımı, paket yöneticisinin sağladığı CMake config dosyalarıyla mümkün oluyor.

Binary Caching ve CI/CD Performansı

C++ paketleri compile süresi nedeniyle CI/CD pipeline’larında darboğaz oluşturur. Boost’un fresh build’i bir Linux runner’da 25-40 dakika sürebiliyor. Bu nedenle binary caching kritik bir özellik.

Senaryo Spack Conan vcpkg
Boost fresh build 32 dakika 28 dakika 26 dakika
Boost cached download 1.2 dakika 45 saniye 52 saniye
20-paket dependency tree 2.4 dakika (cache) 1.8 dakika (cache) 2.1 dakika (cache)
Concretization süresi 8 saniye (Clingo) 3 saniye 1 saniye
Binary cache storage S3, GCS, Azure Artifactory, GH Packages Azure Blob, GH Packages

Spack’in concretization süresi diğerlerine kıyasla daha uzun çünkü Clingo solver tüm dependency graph’i ASP problemine çeviriyor. Bunun karşılığında çoklu varyant senaryolarında çok daha esnek bir çözüm sunuyor. Conan ve vcpkg daha basit dependency graph’lerinde hızlı çözüm üretiyor.

Çoklu Compiler ve Platform Desteği

C++ paket yöneticilerinin en zor problemlerinden biri, aynı paketin farklı compiler/platform kombinasyonları için doğru şekilde yönetilmesidir. Bir paket gcc 11 ile build edilmişse, gcc 12 ile build edilen başka bir paketle ABI uyumsuzluğu yaşanabilir.

Spack vs Conan vs vcpkg 2026: C++ Package Manager Production — Görsel 3
Spack vs Conan vs vcpkg 2026: C++ Package Manager Production — Görsel 3

Spack bu problemi “concretization” adımıyla çözer. Aynı paket için farklı varyantlar (compiler, build type, build option) ayrı kurulumlar olarak yönetilir ve %hash modifier ile spesifik bir varyant talep edilebilir. Conan profile sistemi (default profile, debug profile, gcc11 profile) benzer bir yaklaşım sunar. vcpkg ise “triplet” kavramıyla (x64-linux, x64-windows-static, arm64-osx) aynı amaca farklı yoldan ulaşır.

Türkiye’de Kurumsal Kullanım Örnekleri

Türkiye’de C++ kullanımı oyun, gömülü sistem, finansal trading, bilimsel hesaplama ve görüntü işleme alanlarında yoğunlaşıyor. Paket yöneticisi seçimi sektörel olarak farklılaşıyor.

  • Oyun stüdyoları: vcpkg dominant; Visual Studio entegrasyonu, cross-platform (Windows, Xbox, PlayStation) build kolaylığı
  • Gömülü sistem: Conan tercih ediliyor; cross-compilation profile’ları ve embedded toolchain yönetimi
  • Finansal trading: Conan + Artifactory; private package repository ve denetlenebilir dependency tree
  • Akademik araştırma: Spack; çoklu compiler varyant ihtiyacı, HPC cluster üzerinde kullanım
  • Görüntü işleme (OpenCV ağırlıklı): vcpkg veya Conan; OpenCV ve dependency’lerinin kolay yönetimi
  • Otomotiv: Conan; AUTOSAR uyumluluğu ve enterprise toolchain entegrasyonu

Bir Türkiye oyun stüdyosunun 2025 sonu kararı, vcpkg manifest mode’a geçişi tamamladı. 47 üçüncü taraf kütüphanenin yönetimi tek vcpkg.json dosyasında konsolide edildi. Geliştirici onboarding süresi 2 günden 4 saate düştü, “kütüphane sürüm uyumsuzluğu” tipindeki bug raporları yüzde 73 oranında azaldı.

Kurumsal C++ Paket Yönetimi Dönüşümünde Tipik Sorunlar

Üç paket yöneticisini benimseme sürecinde karşılaşılan sorunlar üç ana grupta toplanabilir.

  • Mevcut manuel dependency yönetimi: Yıllar içinde manuel olarak git submodule veya copy-paste ile yönetilen kütüphanelerin paket yöneticisine taşınması ciddi efor gerektiriyor
  • ABI uyumsuzluğu: Aynı kütüphanenin farklı compiler ile build edilmiş versiyonları ABI seviyesinde uyumsuz; doğru profile/triplet/varyant yönetimi şart
  • Build sistemi geçişi: Make veya Visual Studio Solution dosyalarından CMake’e geçiş, paket yöneticisi adopsiyonunun ön koşulu
  • Binary cache altyapısı: Artifactory, Azure Blob, S3 gibi binary cache backend’lerin kurulması ve maintain edilmesi operasyonel yük getiriyor
  • Cross-compilation karmaşıklığı: Gömülü hedeflerine cross-compile ederken host ve target arasındaki farkların doğru tanımlanması zor
  • Recipe maintain etme: Paket havuzunda eksik paket veya istediğiniz versiyonu olmayan paketler için custom recipe yazma gerekebiliyor

Uzman Yorumu

C++ paket yöneticisi seçimi, ekibin teknik karakterine ve hedef platform profiline bağlı stratejik bir karar. Danışmanlık projelerimde şu üç soruyu sıralıyorum. Birincisi: hangi build sistemi kullanılıyor? CMake hakim ise üç araç da viable. MSBuild ağırlıklı ise vcpkg en doğal seçim. İkincisi: bilimsel/HPC odaklı mı yoksa enterprise software mu? HPC ise Spack tartışmasız lider. Enterprise software ise Conan’ın profile sistemi ve enterprise destek mantıklı. Üçüncüsü: Microsoft ekosistemine bağlılık seviyesi? Yüksekse vcpkg, Visual Studio entegrasyonu nedeniyle kazançlı. Her aracın kendine özgü güçlü yanları var; “biri kesin daha iyi” demek mümkün değil.

— Ömer ÖNAL, Bulut Mimari Danışmanı

SSS

vcpkg manifest mode mu classic mode mu kullanmalı?

Yeni projelerde tartışmasız manifest mode kullanılmalı. Project root’unda vcpkg.json dosyası, dependency’leri version-controlled hale getiriyor ve farklı developer’larda farklı vcpkg kurulumlarının yarattığı sorunları ortadan kaldırıyor. Classic mode legacy projeler için geri uyumluluk amacıyla mevcut.

Conan ve vcpkg aynı projede kullanılabilir mi?

Teknik olarak mümkün ama önerilmez. İki paket yöneticisi farklı binary cache ve ABI varsayımları kullandığı için tutarlılık problemleri yaşanır. Tek bir paket yöneticisine commit etmek operasyonel netlik sağlar.

Spack production C++ ekipleri için uygun mu?

Spack, HPC ve bilimsel hesaplama odaklı olarak tasarlandı. Pure enterprise C++ ekipleri için Conan veya vcpkg daha pragmatik. Ancak HPC ile enterprise sınırında çalışan AI/ML, finansal modelleme ekipleri Spack’ten yararlanabiliyor.

Binary cache nerede tutulmalı?

Kuruluşun mevcut altyapısına bağlı. Artifactory veya Nexus zaten varsa Conan için ideal. Azure ekosistemindeki ekipler için Azure Blob Storage. GitHub Actions kullanan ekipler için GitHub Packages. AWS kullanıcıları için S3. Spack üç backend’i de destekliyor.

Recipe yazmak zorunda kalır mıyım?

Mainstream kütüphaneler için (Boost, Qt, OpenSSL, Protobuf) üç paket yöneticisinde de hazır recipe var. Custom in-house kütüphaneler veya niş projeler için recipe yazmak gerekiyor. Conan ve vcpkg için recipe yazımı görece basit (1-2 saat); Spack için daha kompleks olabiliyor (yarım gün-1 gün).

Sonuç

Spack, Conan ve vcpkg 2026 yılında C++ paket yönetimi alanında üç olgun seçenek olarak farklı kullanım senaryolarına cevap veriyor. Spack, HPC ve bilimsel hesaplama dünyasının ihtiyaçlarına derinden hitap eden, varyant sistemi en gelişmiş araç. Conan, enterprise C++ ekipleri için profile sistemi, Artifactory entegrasyonu ve cross-compilation desteğiyle olgun bir çözüm. vcpkg, Visual Studio entegrasyonu ve manifest mode kolaylığıyla Windows-first ekiplerde standart haline geldi. Doğru seçim için ekibin build sistemi tercihi, hedef platform profili ve organizasyonel bağımlılık altyapısı birlikte değerlendirilmelidir. Üç araç da kendi alanında olgun ve C++ paket yönetimi disiplinini somut hale getirebilen yetkinliğe sahip.

Ömer ÖNAL

Yazılım Mimarı | Yapay Zeka LLC. Ölçeklenebilir SaaS, .NET Core altyapıları ve Otonom AI süreçleri inşa ediyorum. Kod değil, sistem tasarlarım.

Yorum (1)

  1. Ömer ÖNAL
    Mayıs 23, 2026

    C++ paket yoneticisi secimi, ekibin teknik karakterine ve hedef platform profiline bagli stratejik karar. Danismanlik projelerimde build sistemi tercihini (CMake hakim ise ucu viable), bilimsel/HPC mi enterprise mi sorusunu (Spack HPC icin lider, Conan enterprise) ve Microsoft ekosistem bagliligini (yuksekse vcpkg avantajli) siraliyorum. Her aracin guclu yanlari var; ‘biri kesin daha iyi’ demek mumkun degil.

Yorum Yap

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir