Russian Qt Forum

Qt => Вопросы новичков => Тема начата: opera от Август 26, 2020, 11:35



Название: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: opera от Август 26, 2020, 11:35
Добрый день, пишу на этом форуме, потому что нашел такой же вопрос, как у меня, но мне решение не помогло(насколько я понимаю).
Пытаюсь собрать плагин qmysql,после прописывания команды nmake вылезает ошибка Qt5Sql.lib(Qt5Sql.dll) : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'x86'. Я открыл x64 Native Prompt VS2017,фото прикрепляю ниже, что нужно еще настроить для корректной сборки, выручайте пожалуйста


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: kambala от Август 26, 2020, 12:41
а версия Qt установлена для х64?


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: opera от Август 26, 2020, 12:50
Я работаю с таким набором Qt(фото), поэтому да, но если можно как-то по другому проверить, то подскажите как


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: kambala от Август 26, 2020, 17:30
выглядит правильно.

а до nmake какую ты команду вводил?


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: opera от Август 27, 2020, 10:44
qmake -- MYSQL_INCDIR="C:\Program Files\MySQL\Connector C++ 8.0\include" MYSQL_LIBDIR="C:\Program Files\MySQL\Connector C++ 8.0\lib64"


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: kambala от Август 27, 2020, 14:46
1) переменная QTDIR установлена (и на правильную ли папку)?
2) в lib64 случайно не 32-битная либа лежит? :)


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: opera от Август 27, 2020, 17:01
1.QTDIR не установлена, на что она должна стоять (настроена)?
2. я надеюсь, что не 32-х, как мне проверить?


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: kambala от Август 27, 2020, 21:30
1) на папку с Qt: C:\Qt\Qt5.13.2\5.13.2\msvc2017_64
2) вот тут не подскажу, может Свойства покажут

еще вариант — при вызове qmake указать ему правильный mkspec.

кстати по-моему Qt добавляет в Пуск собственный ярлык для открытия правильный msvc prompt с уже настроенной QTDIR.


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: opera от Август 28, 2020, 10:16
настроил QDIR результат тот же:(


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: Пантер от Август 28, 2020, 16:18
настроил QDIR результат тот же:(
QTDIR


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: opera от Август 28, 2020, 16:39
Извиняюсь, QTDIR не помогло :(
QMakeSpec = win32-msvc - это правильно?


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: kambala от Август 28, 2020, 19:57
какая папка Qt прописана в PATH?


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: Пантер от Август 28, 2020, 19:58
win32-msvc - разве это не x86? Тебе же нужно x86_64.


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: kambala от Август 28, 2020, 20:17
win32-msvc - разве это не x86? Тебе же нужно x86_64.
а чет не видно отдельного mkspec для 64... https://github.com/qt/qtbase/tree/5.15.1/mkspecs наверное сам понимает из переменных окружения


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: opera от Август 31, 2020, 12:02
какая папка Qt прописана в PATH?
C:\Qt\Qt5.13.2\5.13.2\msvc2017_64


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: kambala от Август 31, 2020, 12:22
тоже правильно. Тогда остается:
2) в lib64 случайно не 32-битная либа лежит? :)

или проверять что там в Makefile нагенерировалось...


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: opera от Август 31, 2020, 14:15
тоже правильно. Тогда остается:
2) в lib64 случайно не 32-битная либа лежит? :)

или проверять что там в Makefile нагенерировалось...


скачивал архив уже отдельно, вот: https://dev.mysql.com/downloads/connector/cpp/ выбира x64, по другому уже не знаю как определить разрядность


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: kambala от Август 31, 2020, 14:25
с файлами все нормально (проверил, скачав архив с либами).

тогда остается смотреть что там внутри Makefile. Еще выложи полный вывод nmake:
Код:
nmake > a.txt
вывод будет в файле a.txt


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: kambala от Август 31, 2020, 14:41
я только щас заметил на самой первой картинке, что ты пытаешься собрать плагин SQLite, а не MySQL. Это так и задумано?


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: opera от Август 31, 2020, 16:03
с файлами все нормально (проверил, скачав архив с либами).

тогда остается смотреть что там внутри Makefile. Еще выложи полный вывод nmake:
Код:
nmake > a.txt
вывод будет в файле a.txt
прикладываю фвйл:

По поводу того, что я собираю, я так понимаю, что должны собраться все плагины, которые находятся в папке sqldrivers, sqllite одна из(если я правильно понимаю)...


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: kambala от Август 31, 2020, 16:17
в приложенном выводе только sqllite (и последние 4 байта почему-то скачиваться с сайта не хотят).

1) опиши пошагово как ты собираешь
2) приложи сгенерированный Makefile (или Makefile.Release, по-разному может называться)
3) а точно можно плагины дособирать отдельно, а не во время собственной сборки Qt?


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: Авварон от Август 31, 2020, 16:37
плагины mysql жостко кешируют параметры конфигурации, может закешировалась не та архитектура? там надо поудалять файлики вида .qmake.stash и что-то еще (из головы не помню)


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: opera от Август 31, 2020, 18:28
в приложенном выводе только sqllite (и последние 4 байта почему-то скачиваться с сайта не хотят).

1) опиши пошагово как ты собираешь
2) приложи сгенерированный Makefile (или Makefile.Release, по-разному может называться)
3) а точно можно плагины дособирать отдельно, а не во время собственной сборки Qt?

1. открываю промт x64 vs2017 -> перехожу им в папку cd C:\Qt\Qt5.13.2\5.13.2\Src\qtbase\src\plugins\sqldrivers -> пишу: qmake -- MYSQL_INCDIR="C:\Program Files\MySQL\Connector C++ 8.0\include" MYSQL_LIBDIR="C:\Program Files\MySQL\Connector C++ 8.0\lib64" ->далее пишу nmake
2. прикладываю
3. исходя из этого: https://doc.qt.io/qt-5/sql-driver.html можно


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: kambala от Август 31, 2020, 18:56
в https://doc.qt.io/qt-5/sql-driver.html#how-to-build-the-qmysql-plugin-on-windows я вижу, что надо использовать команду nmake sub-mysql, а после — nmake install.

наверное это объясняет, почему вызов nmake без параметров строит также и sqlite, что видно в твоем выводе ;) Читать внимательно:
Цитировать
To be able to add additional drivers to the Qt installation without re-building all of Qt, it is possible to configure and build the qtbase/src/plugins/sqldrivers directory outside of a full Qt build directory. Note that it is not possible to configure each driver separately, only all of them at once. Drivers can be built separately, though. If the Qt build is configured with -prefix, it is necessary to install the plugins after building them, too.


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: opera от Август 31, 2020, 19:05
в https://doc.qt.io/qt-5/sql-driver.html#how-to-build-the-qmysql-plugin-on-windows я вижу, что надо использовать команду nmake sub-mysql, а после — nmake install.

наверное это объясняет, почему вызов nmake без параметров строит также и sqlite, что видно в твоем выводе ;) Читать внимательно:
Цитировать
To be able to add additional drivers to the Qt installation without re-building all of Qt, it is possible to configure and build the qtbase/src/plugins/sqldrivers directory outside of a full Qt build directory. Note that it is not possible to configure each driver separately, only all of them at once. Drivers can be built separately, though. If the Qt build is configured with -prefix, it is necessary to install the plugins after building them, too.
Попытался написать команду nmake sub-mysql выводится ошибка(NMAKE : fatal error U1073: don't know how to make 'sub-mysql'), не понял тогда, что в итоге мне писать?


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: kambala от Август 31, 2020, 22:37
а что выводит
Код:
qmake -- MYSQL_INCDIR="C:\Program Files\MySQL\Connector C++ 8.0\include" MYSQL_LIBDIR="C:\Program Files\MySQL\Connector C++ 8.0\lib64"
?


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: opera от Сентябрь 01, 2020, 10:06
прикрепляю файл:


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: kambala от Сентябрь 01, 2020, 11:00
как видишь, кроме SQLite он больше ничего не желает собирать. почему — без понятия...

это уже тык в небо, но попробуй в путях использовать прямые слэши, а не обратные.


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: opera от Сентябрь 01, 2020, 11:40
как видишь, кроме SQLite он больше ничего не желает собирать. почему — без понятия...

это уже тык в небо, но попробуй в путях использовать прямые слэши, а не обратные.
к сожалению, результат такой же


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: kambala от Сентябрь 01, 2020, 12:14
попробуй выполнить configure из корневой папки исходников, добавив MYSQL_INCDIR и MYSQL_LIBDIR (может еще какие-то опции нужны будут, почитай в документации), а после — собрать плагин (nmake sub-mysql) из папки SQL плагинов.


Название: Re: Ошибка при сборке module machine type 'x64' conflicts with target machine type '
Отправлено: Пантер от Сентябрь 01, 2020, 12:21
Я еще могу предложить посмотреть в сторону пакетного менеджера - conan или vcpkg.