Продолжение статьи о работе с базами данных на wxWidgets. Первая часть статьи доступна здесь. Вторая часть доступна здесь.
В третьей части рассказывается о том, как собрать приложение, использующее DatabaseLayer, SQLite и wxARG в Linux с помощью Eclipse.
Я использую дистрибутив Fedora Core 5, в котором не оказалось файла libsqlite3.a, необходимого для сборки проекта. Для того чтобы решить эту проблему, я удалил пакеты sqlite и sqlite-devel, затем скачал исходный код sqlite (sqlite-x.y.z.tar.gz), собрал его:
./configure –enable-static make make install
После сборки sqlite необходимо убедиться, что путь к файлам libsqlite3.so.* находится в списке путей поиска библиотек. Я же просто создал ссылки на эти файлы в каталоге /lib
Теперь, если это еще не сделано, нужно удалить все .h и .cpp файлы, не относящиеся к проекту databaselayer_sqlite из папок databaselayer/src и databaselayer/include, а также папку databaselayer/tests
После того, как предварительная подготовка выполнена, запускаем Eclipse и в папке databaselayer создаем новый проект. Назовем его SqliteDatabaseLayer.
Выбираем тип проекта Static Library (Gnu). Жмем Finish
Далее идем в настройки проекта и в разделе C/C++ Build -> Miscellaneous в поле Other flags дописываем
`wx-config --cxxflags`
Заметьте, кавычки обратные (кнопка со знаком ~ на клавиатуре ;))
Отлично, настройки библиотеки SqliteDatabaseLayer мы завершили. Теперь нужно создать проект для тестового приложения.
Создаем новый проект в папке SQLiteTest
Указываем тип проекта Executable (Gnu)
В зависимостях проекта выбираем проект библиотеки SqliteDatabaseLayer. Жмем Finish
В свойствах проекта в разделе C/C++ Build -> Directories добавляем новые записи
- {ProjDirPath}/art
- {ProjDirPath}/wxActiveRecord
- {ProjDirPath}/../databaselayer/include
Заметьте, скобки фигурные, в отличии от настроек проекта в Visual Studio
В свойствах проекта в разделе C/C++ Build -> Miscellaneous в поле Other flags дописываем:
`wx-config --cxxflags`
В свойствах проекта в разделе C/C++ Build -> Libraries добавляем новые записи
- SqliteDatabaseLayer
- sqlite3
Библиотеки должны быть добавлены именно в указанной последовательности т.к. библиотека libSqliteDatabaseLayer.a зависит от libsqlite3.a
И в списке Library search path добавляем запись
- {ProjDirPath}/../databaselayer/Debug
В свойствах проекта в разделе C/C++ Build -> GCC C++ Linker -> Miscellaneous в поле Linker flags дописываем:
`wx-config --libs`
Собираем проект с помощью Project -> Build Project
После успешной сборки неплохо было бы запустить наше приложение и проверить его на работоспособность.
Выбираем пункт меню Run -> Run…
В диалоговом окне Run жмем правой кнопкой на элементе C/C++ Local Application, выбираем пункт меню New
После этого у нас должна появиться новая конфигурация запуска с названием SQLiteTest
Жмем кнопку Search Project
В окне Program Selection выбираем наше приложение. Жмем OK
На вкладке Debugger в списке Debugger выбираем GDB Debugger. Жмем Run
Ну, вот и результат… довольно опрятно получилось.
Диалоговое окно ввода данных выглядит вот подобным образом.
Как видим, ничего особо сложного в разработке кросс-платформенных приложений нет, но, как и любой труд, кросс-платформенная разработка программного обеспечения требует опыта и сноровки. Надеюсь, данный материал послужит толчком для новичков начать немного по-другому смотреть на свои проблемы и на способы их решения.
1 Comment