Minule jsme si ukázali jednoduchý příklad v Open Inventoru. Mnohé možná mrzelo, že si nemohou vše hned vyzkoušet. Nicméně instalace nemusí být vždy úplně triviální – problémy na Windows, Linuxu etc. Množství informací, které by se při instalaci mohly hodit, nakonec vydaly za celý článek. Takže je zde. Pokud se časem objeví nějaký nový problém, který by bylo vhodné doplnit do tohoto článku, bude tak učiněno.
Text je pro snadnější orientaci organizován stylem otázek a odpovědí. Pokud zde, i přes snahu autora o kompletnost, odpověď nenaleznete, zeptejte se v diskusi pod článkem.
Seznam témat ohledně instalace:
- Co je potřeba nainstalovat?
- Podporované platformy a kompilátory
- Jak vše nainstalovat v Linuxu?
- Jak na instalaci ve Windows?
Obecné otázky:
Specifické problémy při používání na Windows:
- Co dělají ta pragma ve Windows příkladech?
- Jak ve Visual C++ založit nový projekt pro Open Inventor?
Co je potřeba nainstalovat?
V prvé řadě to bude Inventor API kompatibilní knihovna Coin, poté následuje několik podpůrných knihoven. Souhrn je v tabulce:
název | popis |
Coin | vlastní knihovna poskytující Open Inventor API |
simage | knihovna pro načítání textur z různých grafických formátů |
SoQt (Linux) |
okenní rozhraní pro aplikace založené na knihovně Qt |
SoWin (Win32) |
okenní rozhraní pro Windows aplikace |
knihovna Qt (Linux) |
okenní knihovna Qt, budeme potřebovat development verzi |
Na vysvětlenou: SoQt a Qt budeme používat na Linuxu a SoWin na Windows. Qt je k dispozici všude, kde máme KDE. My jako vývojáři si navíc musíme nainstalovat development verzi. Na Windows si vystačíme se SoWin.
Pro informace „přímo od zdroje“ o prvních čtyřech knihovnách z naší tabulky bych odkázal na www.coin3d.org/Coin/about.php, kde dole mezi developer linky vybereme „Download Binaries“ nebo „Getting the Source“. Binárky, jak vidíme, jsou zde pro Windows a z Linuxů bohužel pouze pro Debian. Požadovaná verze Coin pro náš tutoriál je alespoň 2.0.0. Alternativní řešení, které je sice složitější, ale má i své výhody, je zkompilovat si vše ze zdrojáků. Qt knihovnu stáhnete jako balíček například ze stránek vaší linuxové distribuce či z instalačního Linux CD.
Podporované platformy a kompilátory
Podporovaných platforem je velmi mnoho. Z těch nejznámějších: Windows, Linux, Mac od Apple a obrovské množství Unixů. My se soustředíme pouze na popis Linuxu a Windows.
Na Linuxu budeme používat klasické gcc, na Windows je prošlapaná cesta zatím pouze pro Microsoft Visual C++, nejlépe verzi 6, pro kterou existují i binárky. Údajně snad někdo používá i gcc a prostředí cygwin, (kdyby to někdo testoval, dejte mi prosím vědět výsledek). A pro všechny uživatele Borlandu horká novinka: V uplynulých dnech se objevila zpráva, že se to někomu podařilo zkompilovat i v C++ Builderu. Možná se tedy v krátké době dočkáme oficiální podpory.
Jak vše nainstalovat v Linuxu?
Na Linuxu asi nejčastěji půjdeme cestou vlastní kompilace. Zdrojáky si stáhneme z CVS dle návodu nebo jako snapshots. Věci, které potřebujeme, jsou: Coin verze 2 a novější, simage, SoQt. Navíc, SoQt knihovna využívá Qt knihovnu, proto budeme potřebovat i Qt 3 development verzi. Jediné upozornění: Možná si v snapshots či v CVS všimnete, že jsou tam dvě verze: Coin-2 a Coin. Coin-2 je stabilní verze na rozdíl od Coin, což je vývojová větev. Proto ani z CVS ani ze snapshotů bychom Coin verze neměli stahovat, vždy pouze stabilní Coin-2. Buildování se provádí naprosto standardní cestou. Celý postup je uveden na www.coin3d.org/Coin/building.php. Pokud narazíte na „nevyřešitelný“ problém, odkazuji na diskusi pod článkem.
Ještě jedna věc týkající se kompilace SoQt: Okenní knihovna Qt je obyčejně již nainstalovaná, neboť ji využívají KDE. My však budeme potřebovat navíc developement verzi: libqt3-devel, alespoň tak se to jmenuje v Mandrake 9.1. Po její instalaci před příkazem configure provedeme pouze export QTDIR=/usr/lib/qt3, popřípadě jiné místo, kam se libqt3-devel nainstalovala.
Jak na instalaci ve Windows?
V prvé řadě potřebujeme Visual C++, nejlépe verzi 6, ale i 5 a 7 (.NET) jsou použitelné. Poštěstí-li se, budou během několika dní k dispozici i makefiles pro Borland C++ Builder.
Pro začátek doporučuji použít samorozbalující se balíčky, se kterými je instalace mnohem jednodušší, než kdybychom si vše chtěli zkompilovat ze zdrojáků sami. Balíčky se rozbalí do námi zvoleného adresáře. Instalujeme pouze Coin, simage a SoWin. Pro každý z nich zadáme vždy ten samý adresář pro instalaci (např. c:\Coin3D). Balíčky obsahují binárky pouze pro Visual C++ verze 6. Pro verzi 5 a 7 (.NET) bude potřeba asi vše překompilovat. Údajně je v balíčku i projektový soubor Visual C++, takže by to snad mělo jít jednoduše. Alternativní cesta je skrz Visual C++ kompilátor a Cygwin prostředí, kde kompilace probíhá klasickým unixovým stylem: ./configure a make install. Kdyby se náhodou objevila tvrdá povaha a dala si to velké množství práce s rozjetím kompilace v Mingw nebo v čemkoliv jiném, dejte mi určitě vědět. Ještě připomínám, že po instalaci je potřeba nastavit cesty ve Visual C++ v Tools → Options → záložka Directories, kde musíme nastavit cesty pro include a library files, aby vedly do odpovídajících adresářů, kam jsme nainstalovali Coin. A jako poslední věc je potřeba přidat podadresář bin Coinu do proměnné PATH, aby systém našel potřebné DLL knihovny. To lze provést například přidáním řádku PATH=%PATH%;c:\Coin3D\bin do autoexec.bat nebo v mých WinXP jsem to provedl v Tento počítač → Vlastnosti → Upřesnit → Proměnné prostředí, kde jsem přidal do PATH požadovanou cestu.
Kde vzít dokumentaci k Open Inventoru?
Nejjednodušší je používat on-line dokumentaci. Pro off-line prohlížení je nejsnadnější na Windows instalovat Coin z instalačních balíčků, které již dokumentaci obsahují. Na Linuxu je potřeba nainstalovat doxigen a vhodný je i GraphViz pro generování diagramů dědičnosti tříd. Při configure přidáme parametr –enable-html a během kompilace se nám pak vygeneruje i celá dokumentace. Pokud nechcete jít touto cestou, spakoval jsem dokumentaci ze svého disku a můžete si ji stáhnout.
Další užitečné linky
- Stránky Coin: www.coin3d.org
- On-line dokumentace k Coin: doc.coin3d.org
- Sbírka Inventorských odkazů: oiki.coin3d.org
- The Inventor Mentor – slavná kniha o Open Inventoru v html podobě: www.cs.indiana.edu/classes/b581/docs/inventor/
Inventor_Mentor/sgi_html/index.html
Co dělají ta pragma ve Windows příkladech?
Windows záludnosti se nám představují hned na počátcích souborů z našich příkladů (pouze ve Windows verzi):
#pragma warning(disable:4275)
#pragma warning(disable:4251)
#pragma comment(linker, "/entry:\"mainCRTStartup\"")
Pragma jsou příkazy pro kompilátor, které ovlivňují jeho funkci. Většinou jsou kompilátorově specifické. Proto pokud dané pragma kompilátor nezná, jednoduše ho ignoruje a maximálně vypíše varovnou hlášku. V našem případě první dvě pragma zakazují varovná hlášení (warnings) MSVC při kompilaci h-souborů knihovny Coin. Po prozkoumání toho, co ty hlášky znamenají, myslím, že chyba je určitě na straně Microsoftu. Třetí pragma odstraňuje main/WinMain schizofrenii, kterou před mnoha lety zavedl Microsoft. Toto pragma řekne linkeru, aby přesto, že linkuje Windows aplikaci, ji slinkoval s funkcí main, nikoliv s WinMain. Především první dvě pragma jsou velmi otravná, neboť by bylo třeba je uvádět v každém souboru, který includuje inventorské hlavičkové soubory. Já to řeším svým souborem config.h, který includuji v každém souboru, kde includuji inventorské hlavičkové soubory. Navíc do config.h mohu dávat různá nastavení projektu.
Jak ve Visual C++ založit nový projekt pro Open Inventor?
Projekt zakládáme v podstatě stejně jako jakýkoliv jiný projekt. V nově vytvořeném projektu je však potřeba nastavit několik věcí, aby vše správně fungovalo.
V menu File zvolíme New a na stránce projects vybereme Win32 application, zvolíme project name (např. HelloCone) a umístění projektu na disku. Klikneme na OK a na následující stránce zvolíme empty project. Pak vytvoříme nový C++ soubor, např. v menu File → New, stránka Files vybereme C++ Source File a jako název souboru zvolíme např. HelloCone. Do tohoto souboru napíšeme nebo vkopírujeme náš kód. Před vlastní kompilací musíme provést ještě některá nastavení projektu. V menu zvolíme Project → Settings a na záložce C/C++ připíšeme do Preprocessor definitions COIN_DLL a SOWIN_DLL (hodnoty v tomto poli jsou odděleny čárkami). Tato nastavení řeknou kompilátoru, že má knihovnu Coin a SoWin přilinkovat k aplikaci jako DLL knihovny. Toto nastavení už možná od čerstvě vydané verze Coin 2.1.0 není potřeba díky autodetekci, která byla nedávno dodělána. Zkuste. Pokud detekce nebude fungovat, kompilátor hlásí chybu. Poté se přepneme na záložku Link a v poli Object/library modules, kromě toho, že většinou můžeme skoro všechny uvedené knihovny smazat (snad kromě kernel32.lib user32.lib gdi32.lib), přidáme coin2d.lib a sowin1d.lib. Klikneme na OK a stiskem F7 můžeme provést kompilaci. Pokud kompilace proběhla správně, můžeme tlačítkem F5 spustit naši aplikaci.
Závěr
Tímto končí náš návod na instalaci. Přeju, ať se vše podaří a vyhnou se vám pokud možno všechny problémy. Příště navážeme na náš první příklad HelloCone, který byl sice jednoduchý, ale výsledná aplikace poněkud nudná – mohli jsme si tak maximálně měnit velikost okna. To příště napravíme v dostatečné míře.