交叉编译为Windows:cmake& mxe:在依赖项中丢失

时间:2016-02-19 23:28:18

标签: c++ qt cmake mxe

我试图使用cmake和MXE来交叉编译Windows。

* nix上的一切正常。但是,我不知道如何使用MinGW和交叉编译来获得一些依赖项(Grantlee5和Qt5WebKitWidgets)。 这是我的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-binaries与Windows / MinGW不兼容。

ExternalProject_Add(Grantlee5 GIT_REPOSITORY https://github.com/steveire/grantlee.git) 似乎交叉编译grampe,但它在安装目标失败(当然我不能在我的系统上安装Windows-binary)

add_library(Grantlee5 / usr / local / src / grantlee /)拆分了find_library语句。 Grantlee得到构建,但链接失败(包括grantlee / engine.h未找到)

如何告诉cmake从源代码为特定目标构建Grantlee和Qt5WebKitWidgets(同时使用可用的二进制文件进行动态链接)?什么是"权利"这样做的方法?

0 个答案:

没有答案