Я пытаюсь использовать cmake и MXE для кросс-компиляции для Windows.
Все отлично работает на * nix. Однако я не знаю, как заставить некоторые зависимости (Grantlee5 и Qt5WebKitWidgets) работать с MinGW и кросс-компиляцией.
Вот (минимальный) пример моего CMakeLists.txt:
cmake_minimum_required(VERSION 2.8.11)
project(MyProject)
set(QT_USE_QTXML TRUE)
set(QT_USE_QTWEBKIT TRUE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
# Instruct CMake to run moc automaticall when needed.
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
#find packages
find_package(Qt5Core REQUIRED)
find_package(Qt5Gui REQUIRED)
find_package(Qt5Widgets REQUIRED)
find_package(Qt5Xml REQUIRED)
find_package(Grantlee5 REQUIRED)
find_package(Qt5WebKitWidgets REQUIRED)
find_package(Git)
#(...) add all sources
# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# Tell CMake to create the executable
add_executable(MyProjectExec ${SRCS})
target_link_libraries(MyProjectExec
Qt5::Widgets
Qt5::Xml
Grantlee5::Templates
Qt5::WebKitWidgets
)
Это работает нормально, если я просто использую «cmake». Однако если я использую инструментальную цепочку MXE для кросс-компиляции для Widnows (i686-w64-mingw32.static-cmake), Grantlee5 и Qt5WebKitWidgets выдают следующее сообщение:
Ошибка в CMakeLists.txt: xx (find_package): не удалось найти
файл конфигурации для пакета «Grantlee5», который совместим с
запрашиваемая версия «». [Так в оригинале]Следующие файлы конфигурации были рассмотрены, но не приняты:
/usr/lib/cmake/Grantlee5/Grantlee5Config.cmake, version: 5.0.0 (64bit)
Конечно, мои Grantlee5-бинарные файлы не совместимы с Windows / MinGW.
ExternalProject_Add (Grantlee5 GIT_REPOSITORY https://github.com/steveire/grantlee.git)
кажется, что кросс-компиляция grantlee, однако это не удается на цели установки (конечно, я не могу установить бинарный файл windows в моей системе)
add_library (Grantlee5 / usr / local / src / grantlee /) разбивает оператор find_library. Grantlee получает сборку, но связывание не удается (включая grantlee / engine.h не найдено)
Как заставить cmake создавать Grantlee и Qt5WebKitWidgets из исходного кода для конкретной цели (в противном случае, используя доступные двоичные файлы для динамического связывания)? Каков «правильный» способ сделать это?
Задача ещё не решена.
Других решений пока нет …