Programiści Pythona mają pip, PHP – composera, Ruby ma RubyGems, świat JavaScript ma npm, Rust ma cargo. A C++? Przez dekady odpowiedzią było „jakoś to będzie" – manualne ściąganie źródeł, system pakietów dystrybucji Linuksa, submoduły git, albo kopiowanie plików nagłówkowych wprost do repozytorium. Każde z tych podejść działa, dopóki projekt nie urośnie, nie pojawi się potrzeba budowania na wielu platformach albo aktualizacji jednej z zależności. Nie wspominając już o dołączeniu nowego członka zespołu, który spędzi pierwszy tydzień na walce z zależnościami i konfiguracji środowiska.
Problem zarządzania zależnościami w C++ jest trudniejszy niż w większości języków. Nie istnieje jeden „oficjalny" sposób budowania projektów – mamy CMake, Meson, Make, Ninja, MSBuild i wiele innych. Biblioteki mogą wymagać kompilacji z określonymi flagami, linkowania statycznego lub dynamicznego, a to samo źródło musi często działać na Linuksie, Windowsie i macOS, z różnymi kompilatorami i ich wersjami. Liczba kombinacji rośnie geometrycznie i gwałtownie wymyka się możliwości manualnego jej zarządzania.
Conan powstał, żeby rozwiązać dokładnie ten problem. Jest to menadżer pakietów zaprojektowany z myślą o specyfice ekosystemu C i C++ – obsługuje dowolny system budowania, pozwala precyzyjnie definiować warianty binarne dla różnych konfiguracji i integruje się z istniejącymi projektami bez wymuszania rewolucji w strukturze kodu. Utworzył go zespół, który wcześniej rozwijał nieistniejący już projekt biicode.
W tym artykule przeprowadzimy czytelnika od instalacji, przez konsumowanie pakietów z publicznego repozytorium ConanCenter, aż po tworzenie własnych pakietów i cross-kompilację. Przykłady używają CMake, choć Conan współpracuje również z innymi systemami budowania. Czytelnik powinien czuć się swobodnie z podstawami CMake i kompilacji C++...
Zagadnienia poruszane w tym artykule:
- Pierwsze kroki;
- Instalacja;
- Konfiguracja profilu;
- Anatomia conanfile.txt i conanfile.py;
- Konsumowanie pakietów;
- Repozytorium ConanCenter;
- Praktyczny przykład;
- Integracja z CMake – detale;
- Profile i konfiguracje;
- Tworzenie własnych profili;
- Profil dla innego kompilatora;
- Nadpisywanie z linii poleceń;
- Opcje pakietów;
- Dziedziczenie profili;
- Cross-kompilacja;
- Tworzenie własnych pakietów;
- Pakiet adekwatny – is_prime;
- Przepis pakietu;
- test_package – automatyczna weryfikacja;
- Konsument – Goldbach.
Artykuł pochodzi z magazynu Programista nr 122 (1/2026). Szczegółowy spis treści wydania numer 121: https://programistamag.pl/programista-1-2026-122/
Autorem artykułu jest Paweł "Krzaq" Zakrzewski https://dev.krzaq.cc.
Absolwent Automatyki i Robotyki oraz Informatyki na Zachodniopomorskim Uniwersytecie Technologicznym. Pracuje jako Software Engineer w Hex-Rays. Programowaniem interesuje się od dzieciństwa, jego ostatnie zainteresowania to C++, metaprogramowanie i inżynieria wsteczna.

