小编Man*_*las的帖子

无法使用fixup_bundle()与Qt创建可移植的捆绑包

我已经在其他帖子中搜索了此问题,但到目前为止没有任何内容。所以我在这里。

我想创建一个可移植的捆绑包。可移植,如“即使未安装所需的库(Qt),我也可以在任何OS X机器上运行它”。不幸的是,我无法弄清楚如何使用fixup_bundle()(似乎是正确的工具)实现这一目标。

这是我最小的CMake生成的C ++项目:

main.cpp

#include <QString>
#include <iostream>

int main()
{    
    QString s("Hello, world!");
    std::cout << s.toStdString() << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt

cmake_minimum_required(VERSION 2.8.11)

project(test)

# That part because I use a custom build of Qt. That's not the
# relevant part (I guess?)
FILE(GLOB QTROOTS path_to_qt/Qt-4.8.1/osx/bin/qmake)
find_program(QT_QMAKE_EXECUTABLE NAMES qmake PATHS ${QTROOTS})
find_package(Qt4 COMPONENTS QtCore REQUIRED)
include(${QT_USE_FILE})

add_executable(test MACOSX_BUNDLE main.cpp)

target_link_libraries(test ${QT_LIBRARIES})

install(SCRIPT bundle.cmake)
Run Code Online (Sandbox Code Playgroud)

bundle.cmake

INCLUDE(BundleUtilities)
fixup_bundle(test.app "" "")
Run Code Online (Sandbox Code Playgroud)

这是生成的test.app结构

test.app
 - Contents
    - Info.plist
    - Frameworks …
Run Code Online (Sandbox Code Playgroud)

c++ qt cmake

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

如何使用CMake部署QWindowsIntegrationPlugin

我正在使用CMake构建Qt应用程序。我的项目可以编译,并且要感谢'fixup_bundle()',make install将所需的库复制到我的可执行文件旁边。大!

唯一的问题是,当我执行它时,我得到的恐惧是“此应用程序无法启动,因为它无法找到或加载Qt平台插件“ windows”。错误。

实际上,手动将qwindows.dll复制到可执行文件旁边的“ platforms”目录中可以解决此问题。现在,如何告诉CMake自动执行此操作?

Qt没有太多信息:

插件也可用作CMake中的导入目标。Qt Network,Qt SQL,Qt GUI和Qt Widgets模块具有关联的插件。它们在Qt5_PLUGINS变量中提供了插件列表。

好吧,我想我必须使用Qt5 :: QWindowsIntegrationPlugin,它应该是导入的目标。那就是我迷路的地方。

我知道(好吧,至少我至少知道),fixup_bundle()会查看可执行文件以查找其依赖项。但是,尽管事实是我将可执行文件链接到QWindowsIntegrationPlugin,但没有任何痕迹。因此,fixup_bundle()不会将qwindows.dll复制到我的输出路径中。

除了文件的手动副本外,我找不到适合该问题的CMake友好答案。

谢谢你的帮助。

c++ qt cmake

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

标签 统计

c++ ×2

cmake ×2

qt ×2