SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » Драйвер Firebird для Qt 6.6 (Не удаётся скомпилировать драйвер.)
icon5.gif  Драйвер Firebird для Qt 6.6 [сообщение #3828] Thu, 23 November 2023 12:09 Переход к следующему сообщению
dikiy в настоящее время не в онлайне  dikiy
Сообщений: 4
Зарегистрирован: November 2023
Junior Member
Добрый день. Никак не получается собрать драйвер для Firebird в Qt 6.6 под Windows. Кто-нибудь пробовал? Раньше в версии Qt 5.12 это было гораздо проще, а теперь Qt6 заставляют использовать CMake и Ninja для сборки SQL-драйверов и эта связка ни как не работает. А старый проект драйвера от 5.12 требует слишком много всяких вещей, которые теперь в 6.6 удалены.

Файлы для сборки, которые предоставляет Qt требуют доработки, т.к. там везде указаны пути по-умолчанию. Я их все отредактировал. Настроил все пути. Но вот такой выход получается:

C:\Users\user>C:\Qt\6.6.0\mingw_64\bin\qt-cmake-user -G Ninja -DCMAKE_MAKE_PROGRAM="C:\Qt\Tools\Ninja\ninja.exe" -S C:\Qt\6.6.0\Src\qtbase\src\plugins\sqldrivers -B C:\Qt\6.6.0\Src\qtbase\src\plugins\sqldrivers\ibase\build -DInterbase_INCLUDE_DIR="H:\Qt\Firebird_3.0\Firebird_3_0\include " -DInterbase_LIBRARY="H:\Qt\Firebird_3.0\Firebird_3_0\lib\fbclient_ms.lib "
-- The CXX compiler identification is unknown
-- The C compiler identification is unknown
-- The ASM compiler identification is GNU
-- Found assembler: C:/Qt/Tools/mingw1120_64/bin/gcc.exe
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - failed
-- Check for working CXX compiler: C:/Qt/Tools/mingw1120_64/bin/g++.exe
-- Check for working CXX compiler: C:/Qt/Tools/mingw1120_64/bin/g++.exe - broken
CMake Error at   C:/Qt/Tools/CMake_64/share/cmake-3.24/Modules/CMakeTestCXXCo mpiler.cmake:62 (message):
 The C++ compiler

   "C:/Qt/Tools/mingw1120_64/bin/g++.exe"

 is not able to compile a simple test program.

 It fails with the following output:

   Change Dir:   C:/Qt/6.6.0/Src/qtbase/src/plugins/sqldrivers/ibase/build/CM akeFiles/CMakeTmp

   Run Build Command(s):C:\Qt\Tools\Ninja\ninja.exe cmTC_29d4b && [1/2] Building CXX object CMakeFiles\cmTC_29d4b.dir\testCXXCompiler.cxx.obj
   FAILED: CMakeFiles/cmTC_29d4b.dir/testCXXCompiler.cxx.obj
   C:\Qt\Tools\mingw1120_64\bin\g++.exe    -o CMakeFiles\cmTC_29d4b.dir\testCXXCompiler.cxx.obj -c   C:\Qt\6.6.0\Src\qtbase\src\plugins\sqldrivers\ibase\build\CM akeFiles\CMakeTmp\testCXXCompiler.cxx
   ninja: build stopped: subcommand failed.





 CMake will not be able to correctly generate this project.
Call Stack (most recent call first):
 CMakeLists.txt:7 (project)


-- Configuring incomplete, errors occurred!
See also " C:/Qt/6.6.0/Src/qtbase/src/plugins/sqldrivers/ibase/build/CM akeFiles/CMakeOutput.log ".
See also " C:/Qt/6.6.0/Src/qtbase/src/plugins/sqldrivers/ibase/build/CM akeFiles/CMakeError.log ".

[Обновления: Thu, 23 November 2023 12:12]

Известить модератора

Re: Драйвер Firebird для Qt 6.6 [сообщение #3831 является ответом на сообщение #3828] Thu, 23 November 2023 12:59 Переход к предыдущему сообщениюПереход к следующему сообщению
sim_84 в настоящее время не в онлайне  sim_84
Сообщений: 332
Зарегистрирован: June 2022
Senior Member
Может я чего пропустил, но по моему не собираются только тесты. Попробуй отключить и при сборке
Re: Драйвер Firebird для Qt 6.6 [сообщение #3832 является ответом на сообщение #3831] Thu, 23 November 2023 14:13 Переход к предыдущему сообщениюПереход к следующему сообщению
dikiy в настоящее время не в онлайне  dikiy
Сообщений: 4
Зарегистрирован: November 2023
Junior Member
Спасибо, что откликнулись.
Я, честно говоря, не нашёл где отключаются эти тесты. Но если без их отключения затем выполнить команду

C:\Qt\6.6.0\Src\qtbase\src\plugins\sqldrivers\ibase\build>C:\Qt\Tools\CMake_64\bin\cmake --build .

то Ninja говорит, что файла ninja.build нет.

ninja: error: loading 'build.ninja': не удаётся найти указанный файл.

Этого файла действительно нет, я не нахожу. Поэтому видимо где-то cmake не выполняется как надо.
Re: Драйвер Firebird для Qt 6.6 [сообщение #3834 является ответом на сообщение #3832] Thu, 23 November 2023 16:08 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 415
Зарегистрирован: August 2022
Senior Member
Твоя проблема не в драйвере, твоя проблема в MinGW. Я не видел у них работоспособного компилятора выше версии 8.1.
Re: Драйвер Firebird для Qt 6.6 [сообщение #3844 является ответом на сообщение #3834] Mon, 27 November 2023 10:49 Переход к предыдущему сообщениюПереход к следующему сообщению
dikiy в настоящее время не в онлайне  dikiy
Сообщений: 4
Зарегистрирован: November 2023
Junior Member
Проблема решена. Драйвер получен. Решение опубликую отдельным сообщением. Возможно администратор захочет где-то это закрепить.
icon3.gif  Re: Драйвер Firebird для Qt 6.6 [сообщение #3845 является ответом на сообщение #3844] Mon, 27 November 2023 10:57 Переход к предыдущему сообщению
dikiy в настоящее время не в онлайне  dikiy
Сообщений: 4
Зарегистрирован: November 2023
Junior Member
Сборка SQL-драйвера для Qt6.

Действительно для версий ПО:
Windows 10 Pro x64 22H2 19045.2006 120.2212.4180.0
Qt 6.6.0
Qt Creator 11.0.3 (6.4.3, MSVC 2019, x86_64)
MinGW 11.2.0 x64
CMake 3.24.2
Ninja 28.11.2020 15:06
Firebird 3.0.11.11703

Официальная документация по этому вопросу описывает параллельную реальность со сферическим драйвером в вакууме.

1. Qt должен быть установлен с исходниками.
2. Должен быть установлен Firebird с исходниками.
3. Firebird установлен по умолчанию тут:
C:\Program Files\Firebird
Пробел в названии папки "Program Files" делает сборку драйвера невозможным. Поэтому делаем копию для сборки драйвера тут:
H:\Qt\Firebird
4. Создаём папку для сборки драйвера тут:
H:\Qt\build-sqldrivers-Desktop_Qt_6_6_0_MinGW_64_bit-Release
Папка должна быть пустой. Если папка уже существует, то нужно удалить от туда всё содержимое.
5. Проверяем исходники драйвера тут:
C:\Qt\6.6.0\Src\qtbase\src\plugins\sqldrivers
Там должен быть файл CMakeLists.txt, он понадобится.
И не должно быть файла CMakeLists.txt.user, он будет создан позже. Если этот файл есть - удаляем.
6. Открываем Qt Creator. Меню "Файл", "Открыть файл или проект" и открываем этот файл:
C:\Qt\6.6.0\Src\qtbase\src\plugins\sqldrivers\CMakeLists.txt
7. Ставим галочку напротив нужного компилятора: MinGW 11.2.0 x64.
Справа разворачиваем дополнительные настройки и снимаем галочки напротив всех вариантов сборки кроме Выпуск.
Применяем изменения (кнопка, правый нижний угол).
8. В режиме "Редактор" открывается проект "QSQLiteDriverPlugin", который будет иметь подпапки соответствующие разным типам баз данных, но подпапки "ibase" для драйвера Firebird там не будет.
9. Переходим в режим "Проекты". Проверяем что "Каталог сборки" правильный:
H:\Qt\build-sqldrivers-Desktop_Qt_6_6_0_MinGW_64_bit-Release .
10. Ниже работаем с вкладкой "Current Configuration".
Ключ "FEATURE_sql_ibase" в таблице будем иметь значение "OFF".
Для выполнения настройки поставим галочку "Дополнительно" справа.
11. Над таблицей ключей и значений есть поле поиска. Вводим туда Interbase_INCLUDE_DIR. Меняем значение ключа на
H:\Qt\Firebird\Firebird_3_0\include
Для сохранения изменений щёлкаем мышкой на название ключа, т.е. на текст Interbase_INCLUDE_DIR.
12. В поиске вводим Interbase_LIBRARY и меняем значение этого ключа на
H:\Qt\Firebird\Firebird_3_0\lib\fbclient_ms.lib
Для сохранения изменений щёлкаем мышкой на название ключа.
13. Снимаем галочку "Дополнительно".
14. Под таблицей ключей нажимаем кнопку "Запустить CMake". На запрос о применении изменений ключей нужно согласиться. Будет предложено изменить три ключа: два, которые были отредактированы и третий это FEATURE_sql_ibase с новым значением "ON".
15. Убеждаемся что ключ "FEATURE_sql_ibase" в таблице теперь иметь значение "ON".
16. Снимаем галочки напротив ненужных ключей таких как: "FEATURE_sql_odbc" и "FEATURE_sql_sqlite".
17. В режиме "Редактор" проект "QSQLiteDriverPlugin" теперь будет иметь подпапку "ibase" для драйвера Firebird.
18. Меню "Сборка", "Собрать проект "QSQLiteDriverPlugin"". Если будет запрошено применение изменений на изменение значений ключей "FEATURE_sql_odbc" и "FEATURE_sql_sqlite" в состояние "OFF", нужно согласиться.
19. Файл драйвера, в случае успешной сборки будет тут:
H:\Qt\build-sqldrivers-Desktop_Qt_6_6_0_MinGW_64_bit-Release \plugins\sqldrivers\qsqlibase.dll
20. Файл копируется в папку
C:\Qt\6.6.0\mingw_64\plugins\sqldrivers
а также туда, куда Вам надо.
Предыдущая тема: Автогенерируемые триггера
Следующая тема: Новый веб-сайт firebirdsql.org
Переход к форуму:
  


Текущее время: Wed Dec 18 15:47:34 GMT+3 2024

Общее время, затраченное на создание страницы: 0.02876 секунд