Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

macdeployqt on homebrew installed frameworks

I'm trying to deploy an application using macdeployqt. All Qt frameworks get copied correctly into the application bundle. The problem I encounter is that macdeployqt does not have write permissions on the copied frameworks which originally reside in /usr/local/lib. This is because I have installed qt using homebrew which seems to make install everything read only. My question is whether there is a better way to fix this issue then manually changing all permissions of the qt libraries inside /usr/local/lib so that I can use macdeployqt from within a qt .pro project. (I don't want to use macdeployqt manually with sudo or such)

The reason why I'm asking is because I am using many third party libraries in the project (they get copied ok etc.) which I need to update often through homebrew and thus have to redo the permission changing on them.

Thanks in advance!

like image 824
Abai Avatar asked Feb 10 '11 11:02

Abai


1 Answers

Just in case someone finds this old post looking for info about macdeployqt:

Use a script to do macdeployqt in preference to scripting the macdeployqt commands in your .pro file. That will allow you to change the permissions on the files on the fly.

Here is [a snippet of] the script I use for one of my apps:

https://bugreports.qt-project.org/browse/QTBUG-23268

If you're on Windows and don't have bash, you can use perl or python. The script referenced above modifies the files on the fly to work around a bug - you can put anything you want here, including changing the permissions on the files.

Using a script also means that you have the flexibility to add commands later to do code-signing, packaging or whatever else you need.

The Qt .pro "scripting language" actually generates Makefile commands under the hood and can be quite obscure if you want to accomplish deployment tasks that relate to paths and sets of files.

Also you'll need to create an extra target or include it into your build target - either way the build process becomes more complex and more error prone.

Disclaimer: I worked on Qt for 8 years as a Senior Engineer for Nokia/Trolltech, and also have published a commercial cross-platform app using Qt.

like image 188
Sez Avatar answered Oct 17 '22 01:10

Sez