Conan – menadżer pakietów, którego potrzebuje projekt C++

programistamag.pl 1 tydzień temu

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.

Idź do oryginalnego materiału