Skip to content

Latest commit

 

History

History
105 lines (83 loc) · 5.58 KB

README.md

File metadata and controls

105 lines (83 loc) · 5.58 KB

Biblioteci externe

⚠ Puneți cât mai multe întrebări! Nu există întrebări greșite.

Semnalați orice fel de greșeli găsiți!

Work In Progress (WIP) 🚧

TL;DR:

  • bibliotecile header-only le includem direct în repository
    • le punem într-un folder separat ca să putem să ignorăm warnings din dependențe externe
  • pentru bibliotecile care trebuie compilate, cel mai simplu mi se pare cu FetchContent: doar trebuie decomentat apelul din CMakeLists.txt din repository-ul template și apoi decomentat caching-ul dependențelor din cmake.yml
    • include(FetchContent), apoi
    • pentru fiecare astfel de bibliotecă, pașii ar fi în CMakeLists.txt:
      • FetchContent_Declare(...)
      • FetchContent_MakeAvailable(...)
      • target_include_directories(...)
      • target_link_directories(...)
      • target_link_libraries(...)
      • eventual install(FILES ...)

În cazul în care dorim funcționalități mai avansate sau mai specifice față de ce ne oferă bibliotecile standard, va trebui să folosim biblioteci externe.

  • ⚠ atenție! Codul obiect nu este portabil între sisteme de operare/compilatoare diferite!

Observații:

  • unele biblioteci sunt gândite să fie legate doar static, altele doar dinamic, iar altele în ambele feluri (adică au o parte cu fișiere statice și alta cu fișiere dinamice)
  • de verificat că licențele bibliotecilor pe care le folosim sunt compatibile cu licența proiectului nostru

Care este diferența dintre bibliotecile legate static și cele legate dinamic?

Bibliotecile statice sunt necesare atunci când compilăm codul, ceea ce înseamnă că vor crește dimensiunea executabilului. Bibliotecile dinamice sunt necesare numai atunci când rulăm programul.

Biblioteci recomandate

În această secțiune, aș vrea să vă recomand doar biblioteci care sunt portabile.

De încercat:

De unde mai puteți găsi biblioteci: căutați awesome c++, de exemplu aici

Alte sfaturi

Pentru fișiere mari (minim câțiva MB), este recomandat să folosiți git-lfs. Astfel, dacă le modificați, pe repository-ul local veți avea o singură copie a acestor fișiere mari, însă istoricul complet al modificărilor se va afla pe repository-ul remote (desigur, trebuie ca acesta să știe de lfs).

Resurse recomandate