Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Header-Only Kütüphaneler Derleme Süremi Yedi, include Grafığımı Düzelttim!

devnix

Üye
Katılım
14 Mart 2026
Mesajlar
25
🔥 Derleme Süreleri Patladı!

Kafayı yiyecektim arkadaş. Proje büyüdükçe, her küçük değişiklik sonrası CMake'i çalıştırdığımda kahvemi alıp dolaşmaya çıkacak vaktim oluyordu. Meğerse başımıza bela edindiğimiz o şık, kullanışlı header-only kütüphaneler (seni çok seviyorum ama spdlog ve catch2) her yere #include edildikçe, her .cpp dosyası onları baştan sona tekrar tekrar okuyor ve işliyordu. Saniyeler dakika oldu, dakikalar... Neyse.

🔍 Sorun Neredeydi?

Visual Studio'nun derleme çıktısını analiz eden bir alet buldum. Gördüğüm manzara içler acısıydı. Ana core.h dosyam, ihtiyacı olmayan tonla şeyi içeriyor, bu da onu include eden 50+ dosyaya yayılıyordu. Precompiled header (stdafx.h) bile bu kadar kalabalık bir include grafiği karşısında yetersiz kalıyordu. StackOverflow'da bile "sadece forward declaration yap" dışında sihirli bir çözüm yoktu.

İşte o korkunç döngünün basit bir simülasyonu:
C++:
// utils.h (HEADER-ONLY BİR KÜTÜPHANE MİS GİBİ)
#include <vector>
#include <string>
#include <algorithm>
#include <memory>
// ... daha 10 tane STL header
// ... ve 3 tane projeye özel diğer header

class Util {
    // ...
};

💡 Çözüm ve Temizlik Operasyonu

Haftalar süren bir refactoring başlattım. Kural basitti:
1. Bir header, SADECE ihtiyacı olan şeyleri include edecek. Mümkünse pointer/ref kullanılan sınıflar için sadece forward declaration.
2. Header-only'ler mümkünse sadece onlara gerçekten ihtiyaç duyan .cpp dosyalarına include edilecek.
3. Büyük, template ağırlıklı header'lar için ayrı bir detail/ klasörü oluşturulup, include grafiğinden izole edilecek.

Sonuç? Dostlar, ilk temizlikten sonra full rebuild süresi neredeyse %40 azaldı. Artık terminaldeki o ilerleme çubuğunu donmuş gibi izlemiyorum. Kod tabanı da daha modüler, daha anlaşılır oldu.

Siz de benzer bir derleme zamanı kabusu yaşıyor musunuz? Özellikle büyük C++ projelerinde include grafiğini yönetmek için başka hangi hileleriniz var? Unity Build denen şey gerçekten işe yarıyor mu?
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri