Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to copy/update resources, frameworks or plugins to the (Mac OS X) "app bundle" with Qt Creator or qmake

I've been reading for a couple days on how to copy/update external resources, plugins or frameworks to my App's Mac Bundle using Qt creator or qmake.

Right now I have found two main solutions. One is to use qmake together with some commands on the ".pro" file. The other one is to do a "Custom Deployment Step" script.

I was hoping to use the second option cause I already had a small make script that did what I wanted. The problem is that Qt Creator offers so little variables to work with that the script lost its usefulness. For instance, my script uses the "Target App Path" as a parameter so it can do all its work from there. But please correct me if I'm wrong, Qt Creator only offers %{buildDir} and %{sourceDir} variables...

The other option is using qmake. These are the things that I have tried so far on my ".pro" file:

1) Using the INSTALL command. I did a small test where I tried copying some files this way:

MediaFiles.path = test/media
MediaFiles.files = media/*
INSTALL += MediaFiles

And basically nothing happend. I was hopping to find the same "media" folder on the "test" folder but nothing. Don't know if I'm doing something wrong.

Please note that the "media" folder is beside the "test" folder and the ".pro" file. (They all have the same hierarchy position.)

2) Then I tried QMAKE_BUNDLE_DATA:

MediaFiles.path = Contents/MacOS
MediaFiles.files = media/*
QMAKE_BUNDLE_DATA += MediaFiles

But this gave me the following error:

usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
make: *** [PathToApp] Error 64

None of the solutions seem to be pleasing so far. If I wanted to do a good custom make script I will need to hardcode every target path separately. In my case I have 8 different target path depending on some "CONFIG" variables.

I'm sure the qmake solution are the official way of doing this. If someone can point me out the solution to the Error 64 would be cool.

Some further question: Do I have to do a qmake every time I want to update my bundle? Can I execute my make script with the qmake?

like image 640
Alberto Toglia Avatar asked Oct 03 '11 05:10

Alberto Toglia


1 Answers

QMAKE_BUNDLE_DATA started working flawlessly after putting the command on the end of the .pro script.

mac{
    MediaFiles.files = media
    MediaFiles.path = Contents/MacOS
    QMAKE_BUNDLE_DATA += MediaFiles
}
like image 133
Alberto Toglia Avatar answered Oct 09 '22 12:10

Alberto Toglia