Я пытаюсь перекрестно скомпилировать проект QT, который использует CMake из Linux. Из этой темы я узнал о MXE. Я скомпилировал следующие пакеты:
qtbase
qt6
qt5
Однако запуск /usr/x86_64-w64-mingw32.shared/qt5/bin/qmake && make не дает никакого эффекта, поскольку проект не содержит файлов .pro, а только CMakeLists.txt.
Я также пробовал установить компиляторы, расположенные в /opt/mxe каталог
set(CMAKE_C_COMPILER /opt/mxe/usr/bin/i686-w64-mingw32.static-gcc)
set(CMAKE_CXX_COMPILER /opt/mxe/usr/bin/i686-w64-mingw32.static-g++)
но результатом является всего лишь ошибка при макетной компиляции:
i686-w64-mingw32.static-g++: error: unrecognized command-line option '-mno-direct-extern-access'
Я также пробовал использовать gcc, который я использовал для компиляции пакетов, отличных от Qt:
/usr/bin/x86_64-w64-mingw32-c и /usr/bin/x86_64-w64-mingw32-c соответственно, но результатом была ошибка включения:
/usr/include/qt6/QtGui/qwindowdefs.h:56:12: fatal error: QtGui/qwindowdefs_win.h: No such file or directory
Вот сам файл CMake:
cmake_minimum_required(VERSION 3.16)
project(cross_qt)
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_C_COMPILER /usr/bin/x86_64-w64-mingw32-c)
set(CMAKE_CXX_COMPILER /usr/bin/x86_64-w64-mingw32-c++)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Svg)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS SvgWidgets)
set(PROJECT_SOURCES
src/main.cpp
src/mainwindow.cpp
src/mainwindow.ui
src/mainwindow.hpp
)
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_executable(cross_qt
MANUAL_FINALIZATION
${PROJECT_SOURCES}
)
endif()
target_link_libraries(cross_qt PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries(cross_qt PRIVATE Qt${QT_VERSION_MAJOR}::Svg)
target_link_libraries(cross_qt PRIVATE Qt${QT_VERSION_MAJOR}::SvgWidgets)
include(GNUInstallDirs)
install(TARGETS cross_qt
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
if(QT_VERSION_MAJOR EQUAL 6)
qt_finalize_executable(cross_qt)
endif()
Подробнее здесь: https://stackoverflow.com/questions/797 ... ke-project
C++ QT: как перекрестно скомпилировать проект QT5/6 CMake? ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1760106594
Anonymous
Я пытаюсь перекрестно скомпилировать проект QT, который использует CMake из Linux. Из этой темы я узнал о MXE. Я скомпилировал следующие пакеты:
qtbase
qt6
qt5
Однако запуск /usr/x86_64-w64-mingw32.shared/qt5/bin/qmake && make не дает никакого эффекта, поскольку проект не содержит файлов .pro, а только CMakeLists.txt.
Я также пробовал установить компиляторы, расположенные в /opt/mxe каталог
set(CMAKE_C_COMPILER /opt/mxe/usr/bin/i686-w64-mingw32.static-gcc)
set(CMAKE_CXX_COMPILER /opt/mxe/usr/bin/i686-w64-mingw32.static-g++)
но результатом является всего лишь ошибка при макетной компиляции:
i686-w64-mingw32.static-g++: error: unrecognized command-line option '-mno-direct-extern-access'
Я также пробовал использовать gcc, который я использовал для компиляции пакетов, отличных от Qt:
/usr/bin/x86_64-w64-mingw32-c и /usr/bin/x86_64-w64-mingw32-c соответственно, но результатом была ошибка включения:
/usr/include/qt6/QtGui/qwindowdefs.h:56:12: fatal error: QtGui/qwindowdefs_win.h: No such file or directory
Вот сам файл CMake:
cmake_minimum_required(VERSION 3.16)
project(cross_qt)
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_C_COMPILER /usr/bin/x86_64-w64-mingw32-c)
set(CMAKE_CXX_COMPILER /usr/bin/x86_64-w64-mingw32-c++)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Svg)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS SvgWidgets)
set(PROJECT_SOURCES
src/main.cpp
src/mainwindow.cpp
src/mainwindow.ui
src/mainwindow.hpp
)
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_executable(cross_qt
MANUAL_FINALIZATION
${PROJECT_SOURCES}
)
endif()
target_link_libraries(cross_qt PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
target_link_libraries(cross_qt PRIVATE Qt${QT_VERSION_MAJOR}::Svg)
target_link_libraries(cross_qt PRIVATE Qt${QT_VERSION_MAJOR}::SvgWidgets)
include(GNUInstallDirs)
install(TARGETS cross_qt
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
if(QT_VERSION_MAJOR EQUAL 6)
qt_finalize_executable(cross_qt)
endif()
Подробнее здесь: [url]https://stackoverflow.com/questions/79787449/c-qt-how-to-cross-compile-qt5-6-cmake-project[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия