[1] Sta posle skole - upotreba cmake

[1] Sta posle skole - upotreba cmake

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Sadržaj

Uvod
Jednostavan program
CMake
Zaključak



Uvod
Većina vas je u školi i po forumima naučila osnove C/C++ jezika, i zna da napravi jednostavne male programčiće. Problem nastaje pri pokušaju da se napravi neki malo komplikovaniji program koji umesto konzole, svoj sadržaj prikazuje u prozoru, koji umesto datoteke, svoje podatke snima u bazu, itd. Pokušaću da vam i taj deo programiranja što više približim u narednom periodu.

Jednostavan program
Počećemo jednim malim programčićem koji ste verovatno već svi pravili. Napravićmo digitron koji zna da sabere ili oduzme dva broja. U svom omiljenom programu za pisanje C/C++ koda, napravite nov konzolni projekat i prekopirajte sledeći kod:
#include <stdio.h> int main() {    int op = 0;    int p1 = 0, p2 = 0;    printf("Digitron\n\n");    printf("Izaberite operaciju\n");    printf("  1. Sabiranje\n");    printf("  2. Oduzimanje\n");    printf(": ");    scanf("%d", &op);    if (op != 1 && op != 2)    {        printf("Ta operacija ne postoji!\n");        return 1;    }    printf("Unesite prvi parametar: ");    scanf("%d", &p1);    printf("Unesite drugi parametar: ");    scanf("%d", &p2);    switch(op)    {    case 1:        printf("Rezultat je: %d\n", p1 + p2);        break;    case 2:        printf("Rezultat je: %d\n", p1 - p2);        break;    default:        break;    }    return 0; }
Kao što vidite, nismo koristili ništa novo i nepoznato, samo standardne funkcije za čitanje/pisanje teksta i par grananja. Ako neko već sada ima problema sa razumevanjem koda, neka se još malo vrati osnovama.

CMake
Nažalost, verovatno neće baš svi znati da naprave nov projekat i podese sve što je potrebno da bi kompajler i linker uspeli da naprave konačnu izvršnu datoteku. Uz to, verovatno će neko želeti da proba kod na različitim operativnim sistemima u kojima sistemske biblioteke nisu na istim mestima. Da bi izbegli probleme prilikom kreiranja novih projekata, koristićemo program CMake.
CMake je višeplatformski program koji nam omogućava relativno lako pravljenje izvršnih datoteka. Njegov cilj je da na osnovu par informacija napravi projekat koji će kompajleri instalirani na vašem sistemu moći da obrade. Trenutno CMake podržava sledeće alate:

Mac OS X

Unix Makefiles
Xcode
CodeBlocks
Eclipse CDT4
KDevelop3


Linux

Ninja
Unix Makefiles
CodeBlocks
Eclipse CDT4
KDevelop3


Windows

Borland C++
MSYS Makefiles
MinGW Makefiles
NMake Makefiles
Unix Makefiles
Visual Studio 6
Visual Studio 2003
Visual Studio 2005
Visual Studio 2008
Visual Studio 2010
Visual Studio 2011
Watcom WMake
CodeBlocks
Eclipse CDT4


Instalacija CMake programa je jednostavna. Na Linux operativnim sistemima možete iskoristiti svoj omiljeni program za instalaciju pakete i instalirajte cmake. Za Windows i Mac OS X možete naći instalacione datoteke na sledećoj adresi: http://www.cmake.org/cmake/resources/software.html

CMake koristi datoteku CMakeLists.txt za kreiranje projekata. Preko te datoteke možemo kontrolisati šta želimo da bude uključeno u program, koje biblioteke želimo da koristimo, kako želimo da optimizujemo program, i još mnogo toga. Počećemo vrlo jednostavno, napisaćemo CMakeLists.txt datoteku koja će napraviti projekat za naš mali digitron. Pošto je program veoma jednostavan, jedino što moramo da definišemo je ime projekta i u kojoj datoteci se nalazi kod:
cmake_minimum_required (VERSION 2.6) project (calc) add_executable(calc calc.cpp)
Prvi red je tamo samo da bi onemogućili kreiranje projekta uz upotrebu stare verzije CMake programa. Tim redom zahtevamo najmanje verziju 2.6. Taj red nije obavezan.
U drugom redu definišemo ime projekta. Ime ne mora biti isto kao i ime datoteke u kojoj se nalazi kod. To imeće se koristiti za kreiranje dodatnih datoteka za projekat ako ih neki alat zahteva (recimo Visual Studio, Xcode ili Eclipse).
Treći red definiše ime izvršne datoteke koja će biti kreirana posle kompajliranja programa, i ime datoteke u kojoj se nalazi kod.

Najjednostavnije kreiranje projekta je da otvorite direktorijum u kojem se nalazi CMakeLists.txt datoteka i da pokrenete sledeću komandu:
cmake -G "Ime vašeg kompajlera"
Listu mogućih kompajlera možete dobiti ako ukicate samo:
cmake
Primera radi, sledeća komanda će kreirati projekat za Visual Studio 2010:
cmake -G "Visual Studio 10"
Sledeća komanda će kreirati Makefile za Linux ili MacOS X:
cmake -G "Unix Makefiles"
Sledeća komanda će kreirati projekat za CodeBlocks i MinGW kompajler:
cmake -G "CodeBlocks - MinGW Makefiles"
Kada je projekat kreiran možete ga otvoriti u vašem kompajleru i pokrenuti ga.

Zaključak
U ovom delu smo naučili kako da uz pomoć CMake programa pravimo projekte za različite kompajlere pod različitim operativnim sistemima. Za svaki sledeći program ćemo spremiti CMakeLists.txt datoteku da bi većina bez problema mogla da proba kod čak i u drugim okruženjima u kojima još uvek nemaju iskustva... ovo se odnosi na sve one koji još uvek koriste Dev-C++ Smile Do sledećeg dela očekujem da bar neko proba CMake i da uspešno iskompajlira digitron.
U sledećem delu ćemo se okrenuti novijem načinu za čitanje i pisanje teksta, i odvajanjem logike programa od dela za prikaz.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Més que un club
  • Glavni vokal @ Harpun
  • Pridružio: 27 Feb 2009
  • Poruke: 3898
  • Gde živiš: Novi Sad,Klisa

da budem siguran: ovo

  if (op != 1 && op != 2)    {        printf("Ta operacija ne postoji!\n");        return 1;    }
se moze predstaviti i kao
while(op != 1 && op != 2)               {     printf("Digitron\n\n");    printf("Izaberite operaciju\n");    printf("  1. Sabiranje\n");    printf("  2. Oduzimanje\n");    printf(": ");    scanf("%d", &op);    printf("Ta operacija ne postoji!\n");  }
posto profesor kod nas ne praktikuje return komandu



offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Napisano: 19 Jun 2012 0:36

Naravno da može i tako. Gledao sam da kod bude što jednostavniji jer ovog puta nije bila poenta u pisanju koda nego u pripremanju projekta za kompajliranje. Sledeći deo će se baviti kodom Smile

Dopuna: 19 Jun 2012 20:30

Zanima me da li je neko od Dev-C++ korisnika probao da iskompajlira program u nekom drugom okruženju (Visual Studio, CodeBlocks, Eclipse,...)?

offline
  • Na odmoru xD
  • Na odmoru xD
  • Pridružio: 15 Feb 2012
  • Poruke: 430

Ja nemam dev cpp probao sam na wxdevcpp i na code blocks. Mada bi ja radje da konacno skapiram kako se prave prozori (to bi bio vrhunac moje karijere) Mr. Green

Ko je trenutno na forumu
 

Ukupno su 1269 korisnika na forumu :: 54 registrovanih, 11 sakrivenih i 1204 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: -[CoA]-, A.R.Chafee.Jr., Acivi, aramis s, babaroga, Bobrock1, bojankrstc, Brana01, cifra, comi_pfc, dankisha, DENIRO, Dimitrije Paunovic, Dimitrise93, Djokkinen, Doca, doktor1964, DonRumataEstorski, Fabius, Georgius, HogarStrashni, hooraay, hyla, ILGromovnik, krkalon, kunktator, Kure126-7, Kvazar, kybonacci, Lieutenant, ljubacv, Metanoja, milenko crazy north, Miroljub1979, MiroslavD, Mixelotti, mkukoleca, Motocar, nemkea71, nenooo, raptorsi, ruma, sabros, Sančo, sap, Smajser, srbijaiznadsvega, stalja, suton, tmanda323, Trpe Grozni, uruk, voja64, Zi0mek