从 macdeployqt 中排除框架
Exclude Frameworks from macdeployqt
在 OSX 上使用 Qt/C++ (QT 5.5),有没有办法排除我在 运行 到 macdeployqt
时不使用的 API 框架?
例如,我认为我不需要以下框架:
- QtQml.framework
- QtQuick.framework
- QtWebChannel.framework(我正在使用 webkit 和 webkit 桥,所以我假设我不需要 QtWebChannel 框架?)
- QtMultimedia.framework
- QtMultimediaWidgets.framework
- QtSensors.framework
- QtOpenGL.framework
这是我的建议:尝试从应用程序包中逐一手动删除这些框架,然后 运行 您的应用程序。这只是在 Finder 中打开应用程序包(或从命令行进入它)并将框架移动到另一个文件夹的问题。
您可能会惊讶于这些框架中有多少是必需的——它们都具有相互依赖性。解决此问题的唯一方法是从源代码构建 Qt,并对其进行配置,以便只构建所需的模块。
至于 macdeployqt 本身,它是一个非常通用的工具,无法满足每个应用程序的需要。如果您能够删除任何这些框架,最好的办法是编写一个运行 macdeployqt 的脚本,然后修复输出。 macdeployqt 工具仍然是相当新的(从 Qt 5.5 开始),因此肯定仍然有 bug 需要修复和功能需要实现。所以你现在唯一的选择就是解决它的缺陷。
在 OSX 上使用 Qt/C++ (QT 5.5),有没有办法排除我在 运行 到 macdeployqt
时不使用的 API 框架?
例如,我认为我不需要以下框架:
- QtQml.framework
- QtQuick.framework
- QtWebChannel.framework(我正在使用 webkit 和 webkit 桥,所以我假设我不需要 QtWebChannel 框架?)
- QtMultimedia.framework
- QtMultimediaWidgets.framework
- QtSensors.framework
- QtOpenGL.framework
这是我的建议:尝试从应用程序包中逐一手动删除这些框架,然后 运行 您的应用程序。这只是在 Finder 中打开应用程序包(或从命令行进入它)并将框架移动到另一个文件夹的问题。
您可能会惊讶于这些框架中有多少是必需的——它们都具有相互依赖性。解决此问题的唯一方法是从源代码构建 Qt,并对其进行配置,以便只构建所需的模块。
至于 macdeployqt 本身,它是一个非常通用的工具,无法满足每个应用程序的需要。如果您能够删除任何这些框架,最好的办法是编写一个运行 macdeployqt 的脚本,然后修复输出。 macdeployqt 工具仍然是相当新的(从 Qt 5.5 开始),因此肯定仍然有 bug 需要修复和功能需要实现。所以你现在唯一的选择就是解决它的缺陷。