Pergunta

Eu sou portando um c ++ aplicação Qt a partir do Windows para OSX e não pode envolver minha cabeça em torno do conceito .app pacote. Espero que alguém possa me ajudar a entender.

As minhas vidas executáveis ??aqui: MyProgram.app/Content/MacOS/MyProgram.exe

A minha pasta de recursos vive aqui: MyProgram.app/Content/Resources /

No meu código eu uso um caminho relativo para elementos de referência na pasta de recursos:

"../ Resources / something.png"

Isso funciona muito bem se eu abrir o pacote .app e executar o arquivo .exe diretamente.

Mas isso não é como o pacote .app é destinado ao trabalho. O usuário deve clicar sobre o pacote .app no ??Finder para executar o programa. Mas, nesse caso o meu caminho relativo obras não mais, e é isso que eu não entendo.

Alguém entende o meu problema e como posso corrigir isso?

Foi útil?

Solução

Outras dicas

Nós usamos:

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 );
}

Então faça CoreDir :: pacote () filePath ( "../Resources");.

Quando você compila seu produto, têm o seu tentou definir o caminho de Resources ser parente? Caso contrário, você pode recuperar o pacote principal, o URL do aplicativo da mesma e acrescentá-la aos recursos URL.

Guia

Bundle Programação

Há um manual para tudo, parece:)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top