标签: mxe

在Linux上为Windows构建Qt 5

我想迁移我的Qt 4应用程序而不是使用Qt 5.由于与MXE构建Qt 5的方式存在一些差异,这些指令失败,包括它使用模块化Qt tarball而不是一个大型tarball.

qt qt5 mxe

56
推荐指数
2
解决办法
3万
查看次数

使用动态链接在Linux上交叉编译Windows的Qt应用程序

为了符合Qt的LGPL许可证,使用Qt库的应用程序必须使源代码可用或动态链接到Qt(如果我用这几个字正确地得到了它).

所以我想创建一个完全正确的闭源应用程序.另外,我想在Linux(目前是Xubuntu 12.04)上使用支持C++ 11的g ++/MinGW来开发Windows二进制文件.我按照这个有用的指南来完成后者.但正如指南还指出的那样,创建了静态链接的可执行文件.

由于我使用MXE自动下载和构建Qt库(版本5.0),因此我没有太多机会影响该过程.所以我的问题是,如何创建Qt库和相应应用程序的动态链接版本?

qt cross-compiling dynamic-linking qt5 mxe

14
推荐指数
3
解决办法
7105
查看次数

项目错误:QT中的未知模块:webkitwidgets

我正在尝试使用MXE(在本教程的帮助下),我在这qmake && make一步得到了这个错误:

Project ERROR: Unknown module(s) in QT: webkitwidgets".
Run Code Online (Sandbox Code Playgroud)

这意味着什么,我该怎么办?

linux qt cross-compiling qt5 mxe

8
推荐指数
1
解决办法
4558
查看次数

从Linux构建CMake时,如何使用CMake获取Windows应用程序的依赖关系?

目前,我正在尝试使用Linux上的MinGW和CMake在Windows上部署Qt应用程序。我使用MXE准备构建环境(安装mingw32并编译Qt5共享库)。我已经编写了CMakeList.txt和一个工具链脚本,它们可以很好地构建我的应用程序。

我无法实现的事情是将共享的Qt dll交付给我的内置可执行文件。

这是我的工具链文件:http : //pastebin.com/gh7kSda4

这是我的CMakeLists.txt:http : //pastebin.com/wHA7f7Sj

以下是该脚本的摘录,其中包含安装部分:

# Installation.
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/${TOOLCHAIN}-Bundle)
install(TARGETS mEyeSaver
        RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX})
install(CODE "
        include(BundleUtilities)
        fixup_bundle(\"${CMAKE_INSTALL_PREFIX}/mEyeSaver${TOOLCHAIN_EXECUTABLE_FORMAT}\" \"\" \"${QT5_PATH}/bin\")
" COMPONENT Runtime)
Run Code Online (Sandbox Code Playgroud)

如您所见,我使用fixup_bundle实现我的目标。

键入后,make install我得到以下输出:http : //pastebin.com/DymaH1Mu

之后,x86_64-w64-mingw32-Bundle文件夹中除mEyeSaver.exe外什么都没有。没有dll被复制。我确定~/mxe/usr/x86_64-w64-mingw32.shared/qt5/bin文件夹中需要Qt dll 。但是,我仍然在做错事。

如何解决问题?谢谢

更新资料

我重新考虑了我在做什么,以至于fixup_bundle不能分析Windows可执行文件的依赖关系,因为Linux ldd(它使用的)与Windows应用程序无关。所以我已经编辑了我的问题。

有没有简单的方法可以使用CMake(或其他工具)获取Windows可执行文件的依赖库,而无需直接复制它们?

c++ mingw cmake cross-compiling mxe

6
推荐指数
1
解决办法
587
查看次数

如何在MXE中指定特定的QT版本

我需要将qt 5.5版与mxe一起使用,但找不到任何选项。我只看到qt是4.8.7,qt5是5.8,我仅限于两个版本之一,还是可以使用5.5。

谢谢

qt qt5 mxe

6
推荐指数
1
解决办法
373
查看次数

交叉编译为windows: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
             )
Run Code Online (Sandbox Code Playgroud)

如果我只使用"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) …
Run Code Online (Sandbox Code Playgroud)

c++ qt cmake mxe

5
推荐指数
0
解决办法
812
查看次数

标签 统计

mxe ×6

qt ×5

qt5 ×4

cross-compiling ×3

c++ ×2

cmake ×2

dynamic-linking ×1

linux ×1

mingw ×1