C++ kompaktibilita na Linux, OS X a Windows

Sekcia: Programovanie 14.05.2013 | 23:29
Resty   Návštevník
Chcem sa spýtať či je možné v jazyku C++ dosiahnuť vytvorenie aplikácie, ktorá by bola funkčná na Linuxe, Mac OS X a Windows. Keď tak, akým spôsobom? Som zvedavý totiž ako sa rieši multiplatformová kompaktibilita. Ďakujem
    • RE: C++ kompaktibilita na Linux, OS X a Windows 15.05.2013 | 06:16
      Avatar Miroslav Bendík Gentoo  Administrátor

      Dá sa to pomocou multiplatformových knižníc. Ja napríklad používam pri vývoji Qt (odporúčam vyskúšať Qt Creator) a pridanie podpory ďalšej platformy napr. windows vždy znamenalo len skompilovať iným kompilátorom. Podobne to bude aj u knižnice Wx widgets.

    • RE: C++ kompaktibilita na Linux, OS X a Windows 15.05.2013 | 15:39
      Avatar omdzor #!  Používateľ
      Prednedavnom sa tu spominalo Ultimate++, ale to nepodporuje OS X, potom ti uz ostava len wxWidgets alebo, podla mna najlepsia moznost, Qt. S Qt sa podla mna rychlo zoznamis a vyvoj v vnom ide od ruky, jednoznacne odporucam.
      #! /usr/bin/env python
    • RE: C++ kompaktibilita na Linux, OS X a Windows 15.05.2013 | 16:09
      Avatar Marek   Návštevník
      Tiež by som odporučil QT, lebo tam ide Android port.
    • RE: C++ kompaktibilita na Linux, OS X a Windows 15.05.2013 | 17:31
      Avatar Tommy Angelo   Používateľ
      Chalani Vase odporucania hovoria iba ohladne GUI. Autor otazky mozno chcel odpoved na inu vec. Ohladne kompilatorov, zvyklosti typu standard ANSI-C atd.
      • RE: C++ kompaktibilita na Linux, OS X a Windows 15.05.2013 | 17:42
        Avatar Miroslav Bendík Gentoo  Administrátor

        U kompilátorov neviem či je moc riešiť. Možno máš pravdu ... v každom prípade problém s prenositeľnosťou býva až pri použití platformového API napr. pre siete, adresáre, gui ... zvyšok funguje všade rovnako.

        • RE: C++ kompaktibilita na Linux, OS X a Windows 15.05.2013 | 17:58
          Avatar Tommy Angelo   Používateľ
          Ved prave to, ze nie je jasne, ze ktoru oblast chce zadavatel temy riesit multiplatformovo. Siete, adresare...lebo napriklad pouzitie multiplatformovej kniznice SDL pre vyrobu hier riesi niektore zaujimave oblasti uloh. QT riesi zas inu oblast. Takze zadavatel temy sa spytal dost vseobecne. Nech zkonkretizuje.
    • RE: C++ kompaktibilita na Linux, OS X a Windows 15.05.2013 | 20:32
      Avatar WlaSaTy   Návštevník
      Skús tú otázku formulovať inak. Na takúto otázku sa nedá odpovedať rozumne. Jedna z ďalšíh možných odpovedí je napríklad kľúčové slovo java. Za domácu úlohu si môžeš pozrieť prečo a ako. Ak to stihneš.
    • RE: C++ kompaktibilita na Linux, OS X a Windows 15.05.2013 | 23:35
      Avatar Resty   Návštevník
      Pekná diskusia sa tu rozvinula :). Na moju otázku mi prakticky odpovedal už Miroslav, jednalo sa mi hlavne o portovanie GUI, pochopiteľne pokročilejšie aktivity vždy závisia od API platformy.
    • RE: C++ kompaktibilita na Linux, OS X a Windows 17.05.2013 | 11:34
      Avatar Marek   Návštevník
      Tiež by ma zaujímalo ako pýtateľ vyriešil nekompatibilitu licencovania, patentovanie jednotlivých platforiem, rôzne verzie použitých štandardov, vplyv medzinárodného práva na šírenie aplikácie a iných vecí, ktoré vplývajú na ne/kompatibilitu a nesúvisia s technickým riešením.
      • RE: C++ kompaktibilita na Linux, OS X a Windows 17.05.2013 | 19:07
        Avatar WlaSaTy   Návštevník
        Nuž, to sa rieši obvykle tak. Buď budeš všetko robiť sám a od základu a navrhneš si vlastný multiplatformný toolkit ktorý na všetkých platformách a ich verziách, alebo si vyberieš podľa potrebných kritérií už hotový toolkit. A jedným z kritérií je aj výber správnej licencie ktorá bude vyhovovať danému projektu.
      • RE: C++ kompaktibilita na Linux, OS X a Windows 17.05.2013 | 19:25
        Avatar Miroslav Bendík Gentoo  Administrátor

        Licencovanie aspoň na desktope nie je tak horúce ako vyzerá. LGPL sa dá absolútne bez problémov používať pre komerčné programy, stačí dodržať aby bol program zlinkovateľný s inými verziami knižníc (teda buď dodať objektové kódy, alebo dynamicky linkovanú binárku). U androidu je napr. s Qt možné tiež vyvíjať komerčný softvér (rieši to ministro).</P>

    • RE: C++ kompaktibilita na Linux, OS X a Windows 18.05.2013 | 19:50
      Avatar johnny   Návštevník
      Toto je veľmi obšírna všeobecná téma. Áno je možné napísať jeden zdrojový C++ kód ktorý bude skompilovateľný pre Linux,BSD,OSX,IOS,Android aj Winwows. Áno je možné skompilovať tento C++ zdrojový kód a tým vytvoriť binárne spustiteľné programy pre všetky tieto operačné systémy v jednom operačnom systéme. Áno je možné pomocou voľne dostupných zdrojov vytvárať proprietárne aplikácie. Ale ja tu hovorím o backende, teda nejakej a,so,dll dynamickej/statickej knižnici, ktorú si potom napojíš na svoje GUI. Hints: Vlákna: pthreads, pthreads win32, C++11 threads, Licencie: LGPL, GCC Runtime Library Exception, MIT license. MinGW, GNU Compiler Collection, clang. Spomínalo sa tu LGPL ale pod touto licenciou sú vydávané iba GNU C hreadre, GNU C++ hreadre sú vydávané pod GPL licenciou ale s GCC Runtime library exeption. Preto je výhodné použiť clang, tam sú knižnice vydávané pod MIT licenciou. Ak chceš programovať jednoduché aplikácie, tak je všetko v pohode, avšak ako som napísal, začneš programovať vlákna a máš problém, ktorý však rieši C++11, ale aj tak by som použil posix threads, lebo C++11 mi tam toho dosť chýba. Začneš programovať sieťové aplikácie a vznikne ti tam ďalší problém napríklad, vo windows chýba povedzme inet_ntop,inet_pton... a vo windows musíš pred používaním socketov ich najskôr inicializovať cez WSAStartup. Takže vždy sa niečo vyskytne, ale nie je to zas tak hrozné, vždy sa to dá nejak vyriešiť.
      • RE: C++ kompaktibilita na Linux, OS X a Windows 26.05.2013 | 16:45
        Avatar jR   Návštevník
        toto všetko riešia toolkity Qt alebo Wx ako bolo už povedané vyššie :)