Portál AbcLinuxu, 6. května 2025 22:41

Dotaz: Cmake a makefile

5.4.2020 20:20 Klaxo
Cmake a makefile
Přečteno: 604×
Odpovědět | Admin
Hrám sa s C++ začal som na Windows a Visual Studiu ale keďže C++ je doma na platforme unix / linux nainštaloval som si ho na druhú partíciu + do windows som doplnil WSL a nainštaloval build-essentials a clang. Prišiel som do kontaktu aj s nástrojmi ako cmake a make, lenže vôbec neviem ako sa s nimi pracuje. Vedeli by ste mi poradiť?

Napríklad tento projekt:

https://github.com/skystrife/cpptoml

chcem z neho vybuildovať statickú libku ktorú potom budem vedieť pridať do hociakého projektu (Windowsového alebo linuxového) ako na to?

a tiež sa chcem naučiť vygenerovať linuxové knižine ale aj windowsové .dll

Keby bola ten projekt bol vo formáte Visual Studia *.vcxproj tak si s tým poradím raz dva ale cmake je pre mňa drevená dedina.

Toto síce fungovalo ale vygenerovalo mi to nejakú linuxovú binárku ktorá na začiatku obsahuje reťazec elf:
mkdir build
cd build
cmake ../
make
Ja by som chcel statickú libku nie elf. Vedeli by ste mi povedať akým parametrom ju vygenerujem?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

5.4.2020 20:34 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Cmake a makefile
Odpovědět | | Sbalit | Link | Blokovat | Admin
WSL je Linuxový userspace nad Windowsovým jadrom. To znamená, že kompilátor, ktorý v tom bežíš je ten istý čo beží na natívnom Linuxe a teda generuje Linuxové binárky. A tie budú fungovať pod WSL alebo na natívnom Linuxe ale nebudú bežať na windowse bez WSL a majú všetky obmedzenia WSL - čo napr. (pokiaľ viem) znamená, že napr. žiadne GUI aplikácie. A pokiaľ je to knižnica, tak ju nebude možné linkovať s windowsovým .exe.

Cmake má podľa mňa veľmi dobrú dokumentáciu.

Visual Studio môže mať doinštalovanú podporu pre cmake, čo (pokiaľ viem) znamená, že Visual Studio generuje CMakeLists.txt podľa toho, ako nastavíš nastavenia projektu vo Visual Studio. Teda je to len iný spôsob zaznamenania nastavení projektu.
5.4.2020 21:56 MadCatX | skóre: 28 | blog: dev_urandom
Rozbalit Rozbalit vše Re: Cmake a makefile
Odpovědět | | Sbalit | Link | Blokovat | Admin
Kvůli C++ instalovat Linux nebo nedej bože WSL fakt nemusíš. Pokud chceš targetit jen Windows, používej klidně MSVC a VS. Ten projekt, co odkazuješ je čistě hlavičková knihovna, která se nijak nekompiluje. Ty CMakeové předpisy jsou tam jen proto, aby se ten header v UNIXech při instalaci nakopíroval na správné místo (obvykle /usr/include) a vyrobil CMakeový modul. K tomu, abys tu knihovnu mohl prostě použít nic z toho nepotřebuješ.

Jinak CMake je spíš takový metagenerátor projektových souborů. Na UNIXech se s ním nejčastěji generují Makefily pro autotools ale zvládne třeba vyrobit i projekt pro VS.
6.4.2020 08:36 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: Cmake a makefile
Odpovědět | | Sbalit | Link | Blokovat | Admin
A keď sa tak nad tým zamýšľam ... nevyrobí cmake .vcxproj súbor, ktorý loadneš do Visual Studia a hotovo?
6.4.2020 09:13 debian+
Rozbalit Rozbalit vše Re: Cmake a makefile
Odpovědět | | Sbalit | Link | Blokovat | Admin
https://github.com/skystrife/cpptoml

chcem z neho vybuildovať statickú libku ktorú potom budem vedieť pridať do hociakého projektu (Windowsového alebo linuxového) ako na to?
LOL. "A header-only library for parsing TOML configuration files." ... takze do projektu potrebujes ten h subor (i ked by sa mal volat hpp, lebo je tam c++) a LICENCE subor do Tvojho projektu pre tu cast kodu. Nijake ELF nepotrebujes.
chcem z neho vybuildovať statickú libku ktorú potom budem vedieť pridať do hociakého projektu (Windowsového alebo linuxového) ako na to?
Preco staticku? Nestaci dynamicka? Moze byt problem kvoli linkovaniu C kniznice, ak ju vyuzivas. Takze prekladat dynamiku.
Toto síce fungovalo ale vygenerovalo mi to nejakú linuxovú binárku ktorá na začiatku obsahuje reťazec elf:
Moze to byt v poriadku. V linuxe su spustitelne subory typu formatu ELF. Co Ti vypise na ten subor linuxovy program file.

Nauc sa najprv na konzole, ako to funguje svet v Linuxe a potom nejake klikatko alebo admin compile tool, kt. zabali ukony za teba: http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html.

Cital si toto? https://docs.microsoft.com/en-us/azure-sphere/resources/convert-vcxproj-cmake
10.4.2020 11:54 Ivan
Rozbalit Rozbalit vše Re: Cmake a makefile
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud uz mas MSVC tak si jeste nainstaluj CMAKE pro Windows. Spust cmake-gui.exe, nakonfiguruj si ten projekt, a cmake-gui ti vytvori "projekt" (.vxproj) pro MSVC. Ten pak normalne otevri v MSVC. A dal uz vse ostatni zvladnes v MSVC.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.