/ / Ako zahrnúť knižnicu do môjho kódu pomocou cmake? - c ++, cmake, yaml-cpp

Ako zahrnúť knižnicu do kódu pomocou nástroja cmake? - c ++, cmake, yaml-cpp

Snažil som sa „zobrať“ knižnicu yaml-cpp, nie som si istý, či som to urobil správne, ale ako to budem robiť? V návode (https://github.com/jbeder/yaml-cpp/blob/master/README.md) hovorí, že spustiť cmake v build dir, ale cmake nemohol nájsť súbor cmakelist, tak som to urobil v zdrojovom adresári, ale čo potom? Ako ho budovať?

Keby niekto mohol krok za krokom urobiť nováčika, aby si dal knižnicu (alebo nejakú knižnicu skutočne), aby som ju mohol zahrnúť do svojho kódu, bolo by to úžasné.

Používam Windows 7 a kompilujem pomocou terminálu (pomocou Codeblocks MinGW gcc / g ++) a editora úžasného textu 3.

Edit: Nemám "urobiť". Ako to môžem získať?

odpovede:

2 pre odpoveď č. 1

Nasleduje sprievodca krok za krokom: Na účely tejto odpovede namiesto toho použijem cmake gui na zdôraznenie niekoľkých kľúčových bodov.

  1. ísť do https://github.com/jbeder/yaml-cpp a stiahnite si koreňovú knižnicu.
  2. otvorené cmake gui a vyberte zdrojový adresár ako <my project>/yaml-cpp-master

  3. vyberte adresár pre zostavenie. Ja by som to nazval <my project>/yaml-cpp-master/codeblocks_build

  4. stlačte konfigurovať a potom skontrolujte všetky hodnoty.

  5. stlačte vygenerovať a čakať na dokončenie.

  6. Nájdite vygenerovaný súbor projektu codeblocks <my project>/yaml-cpp-master/codeblocks_build

  7. Zostavte projekt tak, ako obvykle.

  8. nájdite vygenerované súbory DLL a prepojte ich na svoj projekt.

Dôvodom, prečo sa zobrazuje táto chyba, je skutočnosť, že cmake sa pokúša nájsť zdrojový kód v adresári build ktorý je novovytvorený tak, ako je vidieť v návode:

mkdir build
cd build

Toto je určené na špecifikovanie toho, kde sa má stavať, a nie z ktorého sa má stavať. Ak ju chcete použiť prostredníctvom príkazového riadku, musíte povedať cmake, kde sa má stavať a kde je zdroj.

Aby ste potom mohli volať funkcie z tejto knižnice, budete musieť prepojiť hlavičkové súbory (súbory začínajúce na .h alebo .hpp) a knižnice DLL.

na .cpp .c atď. je miesto, kde je implementácia, ale .h .hpp kde sú definície.

Takže, keď zahrňujete takto: #include<something.h> Zahŕňate definície, ktoré sú neskôr vyplnené súbormi .cpp, avšak v prípade knižnice sú namiesto nich vyplnené .dll alebo .o