0

我在 Mac OS X 10.8 和 10.9 上运行 Qt 5.3.1 我正在尝试使用 macdeployqt 工具将库和插件与我的可执行文件捆绑在一起,但它显然试图将所有内容都包含在我的硬盘上。

我调用它:

/Applications/Qt/5.3.1/5.3/clang_64/bin/macdeployqt /Users/adamwilt/Desktop/temp/DesktopPixie.app -verbose=2
-qmldir=/Users/adamwilt/Desktop/temp/DesktopPixie.app/Contents/Resources/qml/DesktopPixie

并获得许多正常的、预期的日志消息,例如:

Log: copy: "/Applications/Qt/5.3.1/5.3/clang_64/qml/QtQuick/Controls/Styles/Base/images" "/Users/adamwilt/Desktop/temp/DesktopPixie.app/Contents/Resources/qml/QtQuick/Controls/Styles/Base/images"

...在我开始收到以下消息之前,一切都运行良好:

Log: copy: "" "/Users/adamwilt/Desktop/temp/DesktopPixie.app/Contents/Resources/qml/MessageBoxUI/Enums"
ERROR: file copy failed from "/do-gst"
ERROR:  to "/Users/adamwilt/Desktop/temp/DesktopPixie.app/Contents/Resources/qml/MessageBoxUI/Enums/do-gst"
ERROR: file copy failed from "/rescuepro.properties"
ERROR:  to "/Users/adamwilt/Desktop/temp/DesktopPixie.app/Contents/Resources/qml/MessageBoxUI/Enums/rescuepro.properties"
ERROR: file copy failed from "/rescuepro34act.lic"

然后乐趣开始了:

Log: copy: "/Applications" "/Users/adamwilt/Desktop/temp/DesktopPixie.app/Contents/Resources/qml/MessageBoxUI/Enums/Applications"
Log:  copied: "/Applications/License.rtf"
Log:  to "/Users/adamwilt/Desktop/temp/DesktopPixie.app/Contents/Resources/qml/MessageBoxUI/Enums/Applications/License.rtf"
Log: copy: "/Applications/0xED-1.0.7.app" "/Users/adamwilt/Desktop/temp/DesktopPixie.app/Contents/Resources/qml/MessageBoxUI/Enums/Applications/0xED-1.0.7.app"

似乎它正在尝试将所有内容(即“”)复制到应用程序中,但是当我还有磁盘空间时,我 ^C 退出了它!

起初它没有这样做。然后它这样做了一个星期;然后它停止了;现在它回来了。这是一个分布式开发项目;我正在做 QML 的东西,而其他地方的人正在做 C++。其他人可能在某处更改了导致这种情况发生的配置,但我是唯一一个进行 Mac 部署的人,所以我是唯一看到这一点的人。

macdeployqt 是否有某种配置文件可能会被触发?还是更可能是与 C++ 对象 MessageBoxUI 相关的问题,它定义了几个 Q_ENUM(显然是正确的,因为它编译时没有警告或错误,并且似乎运行正常),因为这是它开始发疯时的目标目录?

4

1 回答 1

1

怀疑它(足够好,我可以继续):

我正在尝试部署的 Qt 应用程序位于 ~/Desktop/temp 中。如果我在运行 macdeployqt 之前将当前目录设置为 ~/Desktop 或 ~/Desktop/temp,它会按预期运行。

如果我从我的主目录 ~ 或 ~/Documents 运行它,macdeployqt 会尝试提取它在 /Applications、/opt 和/或与应用程序无关的其他目录中找到的所有内容。

将 cwd 设置为大多数其他路径,包括 ~/Downloads、/Applications、~/Documents 的子目录等似乎也有效;它只是从 ~ 和 ~/Documents 运行 macdeployqt 导致问题。

没有正确解释为什么会发生这种情况,只是警告以防其他人看到这种奇怪的行为:在运行 macdeployqt 之前尝试更改应用程序的位置。

于 2014-10-16T01:47:05.973 回答