Zobrazují se příspěvky se štítkemprogramování. Zobrazit všechny příspěvky
Zobrazují se příspěvky se štítkemprogramování. Zobrazit všechny příspěvky

úterý, května 20, 2008

KDevelop vs. databáze SQLite

V poslední době jsem řešil problém, jakým způsobem jednoduše zahrnout do KDE aplikace vytvořené v KDevelopu výše zmíněnou databázi. Řešení se nakonec ukázalo jako docela jednoduché. Protože jsem tvor zapomětlivý a téměř jistě tento postup časem zapomenu, raději ho sepisuji a třeba se nakonec bude hodit i někomu jinému.

Proč jsem se vydal cestou vlastní kompilace ze zdrojových kódů SQLite a nenechal vše na vlastních ovladačích knihovny QT ? Protože aktualizace zdrojových kódů databáze je docela častá a knihovna QT je nereflektuje dostatečně včas a ve verzi QT knihovny 3.3 se mi povedlo otevřít pouze databázové soubory SQLite verze 2 (aktuální je SQLite formát verze 3). Možná byla chyba na mojí straně – nevím, dále jsem to do podrobností nezkoumal.

Celý postup je otestován na distribuci Fedora Core 9 (Sulphur) a použitá verze KDevelopu byla 3.5.1. Vše je ukázáno na jednoduché aplikaci pojmenované SQLiteTest, která v konečném stavu umí pouze otevřít a uzavřít testovací databázi. Další funkce by již neměl být problém doimplementovat, stačí prozkoumat soubory sqlitedb.h a sqlitedb.cpp, které tvoří wrapper nad samotnou knihovnou databáze a taktéž obsahují všechny funkce potřebné k běžným operacím nad databází.

  1. Stáhneme zdrojové kódy databáze SQLite ze stránek projektu (http://www.sqlite.org). Já použil ZIP archív, ve kterém jsou uloženy jenom čisté zdrojové kódy bez konfiguračních skriptů.
  2. Vytvoříme nový projekt v KDevelopu: menu Project -> New project..., zvolíme C++ -> KDE -> Simple KDE Application a projekt pojmenujeme SQLiteTest.
  3. Zobrazíme záložku AutoMake Manageru (pravá část okna KDevelopu). V hořením stromě označíme složku src, klikneme na ní pravým tlačítkem a zvolíme Add new subproject... a nazveme jej sqlite_source.
  4. Do nově vzniklé složky sqlite_source v adresářové struktuře našeho projektu nakopírujeme céčkovské i hlavičkové soubory zdrojových kódů databáze SQLite (POZOR ! - bez souboru tclsqlite.c - POHOV !).
  5. V Automake manageru v horním stromě označíme složku sqlite_source, klikneme na ní pravým tlačítkem a zvolíme Add target...
  6. V zobrazeném dialogovém okně nastavíme volbu Primary na Library, Prefix na lib, vyplníme File name hodnotou libsqlite.so a stiskneme tlačítko OK
  7. V Automake manageru v dolním stromě klikneme pravým tlačítkem na libsqlite.so.a a zvolíme Add Existing files...
  8. V zobrazeném dialogovém okně v levé části vybereme všechny *.c a *.h soubory, stiskneme tlačítko Add selected a stiskneme OK.
  9. V Automake manageru v horním stromě označíme složku src, poté v dolním stromě vybereme sqlitetest, stiskneme na něm pravé tlačítko myši a zvolíme Options, přejdeme do záložky Libraries a v sekci Link convenience libraries inside project (LDADD) zaškrtneme knihovnu src/sqlite_source/libsqlite.so.a a potvrdíme stiskem tlačítka OK. Může nastat problém s komentáři ve zdrojových kódech vlastní databáze - tzn. vyhodit ze zdrojáků všechny řádky začínající '//' (komentáře).
  10. Následuje přidání wrapperu nad databází SQLite do naší aplikace. Já jsem si vypůjčil jeden z projektu SQLiteBrowser. Do src složky aplikace nakopírujeme soubory sqlitedb.cpp, sqlitedb.h, sqlbrowser_util.cpp a sqlbrowser_util.h. V honím stromě Automake manageru si označíme složku src a v dolním stromě poté pravým tlačítkem klikneme na složku sqliteexp a zvolíme volbu Add existing files... Poté v dialogovém okně označíme sqlitedb.cpp, sqlitedb.h, sqlbrowser_util.cpp, sqlbrowser_util.h, stiskneme Add selected a potvrdíme tlačítkem OK.
  11. Poté již stačí poupravit sqliteexp.cpp (nezapomenout na #include "sqlitedb.h" )
  12. Zvolíme Build project v menu Build a je to...
Celá ukázková aplikace je připravena ke stažení zde - SQLiteTest.tar.gz. Ve složce src je uložena i testovací databáze testik.db.

That's all, folks !


čtvrtek, září 27, 2007

Kompilace databáze SQLite ve Visual Studiu 2005

Tento příspěvek je jakýmsi jednoduchým popisem (How-To), jakým způsobem zkompilovat a slinkovat databázi SQLite ze zdrojových kódů pomocí MS Visual Studia 2005 (dále jen VS 2005), pro následné použití v jiné aplikaci. K napsání mě vedl fakt, že sám jsem měl s kompilací problémy a některá nastavení preprocesoru či kompilátoru nemusí být na první pohled úplně zřejmá.
Veškeré postupy se týkají databázového stroje verze 3.4.2, která je v době psaní tohoto návodu poslední stabilní, ale tento postup by měl fungovat i na starších verzích.

Stažení potřebných souborů
Začneme stažením zdrojových kódů databáze SQLite. Pro kompilaci stáhneme tzv. „preprocessed C code“, dále pak (kvůli def souboru) i zkompilovanou verzi databáze.


Na disku vytvoříme adresář SQLite, v něm podadresář SQLite_src a do tohoto podadresáře dekomprimujeme stažený ZIP soubor sqlite-source-3_4_2.zip.

Vytvoření projektu
Spustíme VS 2005 a vytvoříme nový projekt – menu File->New->Project… a následně nastavíme projekt dle obrázku 1.

Obrázek 1


Stiskneme tlačítko OK a v dalším okně tlačítko Next a dokončíme vytvoření projektu s volbami, které jsou na obrázku 2.

Obrázek 2

Stiskneme Finish a projekt je vytvořen.

Nastavení a kompilace projektu
Do adresáře s tímto projektem (v našem případě „\SQLite\SQLite_src\SQLite_src” zkopírujeme soubor sqlite3.def ze staženého sqlitedll-3_4_2.zip.
Nyní přidáme do projektu zdrojové soubory. Menu Project->Add Existing Item…, označíme všechny hlavičkové a C soubory - mimo tclsqlite.c a shell.c (kompilujeme bez podpory TCL a bez podpory shellu) a potvrdíme tlačítkem Add. Přidáme také DEF soubor , který by měl být nakopírován v podadresáři SQLite_src.

Nyní je třeba nastavit vlastní projekt. Menu Project->Properties, v combu Configuration vybereme volbu All configurations a preprocesor nastavíme podle obrázku 3 (NO_TCL;SQLITE_CORE).

Obrázek 3


Dále následuje nastavení Runtime library dle obrázku 4 (Multi-threaded DLL).

Obrázek 4


Posledním krokem je nastavení linkeru dle obrázku 5 (sqlite3.def).

Obrázek 5


Také chci ovlivnit název výsledné DLL knihovny, takže nastavím Linker->General->OutputFile na $(OutDir)\sqlite3.dll.

Vše potvrdíme tlačítkem OK a jdeme na kompilaci. Během ní nám vyskáče necelých 300 warningů, které můžeme v tichosti ignorovat. Po úspěšné kompilaci vzniknou 2 soubory, které budeme potřebovat při začlenění SQLite enginu do naší aplikace – sqlite3.dll a sqlite3.lib.

Případné dotazy rád zodpovím v diskuzi pod příspěvkem.