Сборка плагина QSQLITE для Windows с поддержкой unicode (ICU)

Опубликовано: 25.04.2013 Автор: ёжик в апельсинах

В комплекте с QT поставляется плагин для работы с базами данных "SQLite". Для многих задач его достаточно. И лишь единственное омрачает радость использования данного плагина — по умолчанию в плагине отключена поддержка unicode. А это значит, что регистронезависимые запросы и правильная символьная сортировка будет выполняться только для латинских символов.

Если в своей базе вы используете кириллицу (или иные нелатинские символы), то такая несправедливость вряд ли вас устроит.

После некоторого гугления, чтения мануалов решение нашлось. Предложил его на Хабре пользователь couragic, за что ему большое спасибо, честь и хвала =)

С оригинальным решением можно ознакомится на Хабре, а под катом оно же, но разжеванное для таких непонятливых как я =)

 

Для компиляции использовалась установленная VS2010 (не экспресс), Qt 5.0.0 (32-bit), Qt Add-in для VS2010

1. Скачиваем бинарники ICU, исходники SQLITE и исходный код QT-base. Мне поддержка unicode нужна была в уже написанном, скомпилированном и работающем проекте. Потому я старался использовать версии ICU и SQLITE, которые используются в моей программе. Для моего проекта это были бинарники ICU версии 4.9 для VS2010 32-бит, исходники SQLITE версии 3.7, исходники Qt-base версии 5.0.2.

 

2. Распаковываем полученные пакеты (например я распаковал ICU в "с:\icu" , SQLITE в "c:\sqlite-src-3071602", а Qt-base в "c:\qtbase-opensource-src-5.0.2").

 

3. Открываем файл QTSRCDIR\src\3rdparty\sqlite.pri (у меня он лежит в c:\qtbase-opensource-src-5.0.2\src\3rdparty\sqlite.pri) в текстовом редакторе и заменяем в нем текст на следующий:

 

CONFIG(release, debug|release):DEFINES *= NDEBUG
DEFINES += SQLITE_OMIT_LOAD_EXTENSION SQLITE_OMIT_COMPLETE SQLITE_ENABLE_ICU
INCLUDEPATH += $$PWD/sqlite \
$$SQLITE_DIR/src
win32 {
 INCLUDEPATH += $$ICU_DIR/include
}
unix {
 INCLUDEPATH += $$ICU_DIR/common
}
SOURCES += $$PWD/sqlite/sqlite3.c \
$$SQLITE_DIR/ext/icu/icu.c
LIBS += -L$$ICU_DIR/lib

win32 {
 LIBS += -licuuc \
 -licuin
}

unix {
 LIBS += -lcudata \
 -lcui18n \
 -lcuuc
}

 

4. Открываем консоль Qt (Пуск -> Все программы -> Qt 5.0.0 -> 5.0.0 -> MSVC 2010 -> Qt 5.0.0 for Desktop (MSVC 2010)).

 

5. Завершаем настройку консоли, запустив батник "vcvarsall.bat"

 

"C:\Program Files\Microsoft Visual Studio 10.0\VC\bin\vcvarsall.bat"

 

6. Идем в папку QTSRCDIR\src\plugins\sqldrivers\sqlite\

 

c:\>cd c:\qtbase-opensource-src-5.0.2\src\plugins\sqldrivers\sqlite

 

7. Запускаем qmake следующей командой "qmake sqlite.pro ICU_DIR="АДРЕС-ДО-БИНАРНИКОВ-ICU" SQLITE_DIR="АДРЕС-ДО-ИСХОДНИКОВ-SQLITE""

 

qmake sqlite.pro ICU_DIR="c:\icu"» SQLITE_DIR="c:\sqlite-src-3071602"

 

8. Запускаем компиляцию

 

nmake all

 

9. После завершения компиляции можно забрать плагин из папки QTSRCDIR\plugins\sqldrivers (у меня это "E:\qtbase-opensource-src-5.0.2\plugins\sqldrivers").

 

10. В поставке программы должны лежать файл qsqlite.dll (в папке /plugins/) и файлы icudt49.dll, icuin49.dll, icuuc49.dll (в папке программы).

 

Статья написана на основе: Комментария пользователя couragic на Хабрахабре:http://habrahabr.ru/post/128836/#comment_4270057.

WEBSITE.WS - Your Internet Address For Life™ <p> Your browser does not support frames. Continue to <a href="https://www.website.ws/wc_landing.dhtml?domain=ucoz.ws">https://www.website.ws/wc_landing.dhtml?domain=ucoz.ws</a>.</p> Просмотров: 12558