我正在将一个c ++ Qt应用程序从Windows移植到OSX,无法绕过.app包概念。我希望有人能帮助我理解。
我的可执行文件存在于此处:MyProgram.app/Content/MacOS/MyProgram.exe
我的资源文件夹位于此处:MyProgram.app/Content/Resources /
在我的代码中,我使用相对路径来引用资源文件夹中的项目:
“../资源/ something.png”
如果我打开.app包并直接运行.exe,这很有效。
但这不是.app包的工作方式。用户应该在Finder中单击.app包以运行该程序。但在那种情况下,我的相对路径不再有效,这就是我不明白的地方。
有没有人了解我的问题以及如何解决它?
答案 0 :(得分:5)
QApplication::applicationDirPath()
http://doc.qt.io/qt-5/qcoreapplication.html#applicationDirPath
答案 1 :(得分:3)
我们使用:
QDir
CoreDir::bundle()
{
// Trolltech provided example
CFURLRef appUrlRef = CFBundleCopyBundleURL( CFBundleGetMainBundle() );
CFStringRef macPath = CFURLCopyFileSystemPath( appUrlRef, kCFURLPOSIXPathStyle );
QString path = CFStringToQString( macPath );
CFRelease(appUrlRef);
CFRelease(macPath);
return QDir( path );
}
CoreDir :: bundle()。filePath(“../Resources”);
答案 2 :(得分:0)
编译产品时,是否尝试将Resources
的路径设置为相对路径?否则,您可以检索主包,其应用程序的URL并将其附加到资源URL。
答案 3 :(得分:0)
有一本手册,似乎:)