You should read the official documentation, but it is brief. Here, I elaborate:
- discuss general concepts that seem obvious to experienced developers
- discuss specific commands
(See my other platform specific posts, I plan to consolidate sections here.)
Installing and upgrading pyqtdeploy
The pyqtdeploy download page is not really a place to download. It says that you can:
- install the latest stable release using pip3
- install the latest development version using mercurial (hg)
Managing pyqtdeploy using pip3
pip3 is needed to install stable pyqtdeploy
- OSX: pip3 is installed with Python3.
- Ubuntu: if pip3 is not already installed:
sudo apt-get install python3-pip
Installing latest stable pyqtdeploy
pip3 install pyqtdeploy
(If that fails on permissions: sudo pip3…. )
Upgrading stable pyqtdeploy
Pyqtdeploy is released frequently. To upgrade to the latest stable release.
>pip3 install pyqtdeploy --upgrade
Soft linking to pyqtdeploy
It seems that the above does not put pyqtdeploy and pyqtdeploycli executables in the path. You might need to make soft links:
>cd /usr/local/bin >sudo ln -s /Library/Frameworks/Python.framework/Versions/3.4/bin/pyqtdeploycli pyqtdeploycli >sudo ln -s /Library/Frameworks/Python.framework/Versions/3.4/bin/pyqtdeploy pyqtdeploy
Managing your development version of pyqtdeploy using Mercurial
Note that mercurial uses Python2.7 but pyqtdeploy uses Python3.
Installing pyqtdeploy using hg
>hg clone http://www.riverbankcomputing.com/hg/pyqtdeploy >cd pyqtdeploy # to the directory you just cloned >make VERSION # ? not sure why next two steps are not dependencies in the Makefile >make pyqtdeploy/version.py >sudo python3 setup.py install
Again note that we install in python3 site packages.
Updating your development version of pyqtdeploy
>cd ~/Downloads/pyqtdeploy* >hg pull >hg update > ??? make VERSION >sudo python3 setup.py install
You need Mercurial to download development version of pyqtdeploy. Mercurial is a version control system. Also known as the ‘hg’ command.
Note that Mercurial uses Python 2.7 and doesn’t support Python3 but that’s usually OK since Python-2.7 is usually installed.
Pyqtdeploy is now two tools
Starting with version 0.6, there are separate tools:
- pyqtdeploycli: a command line tool for building static libraries
- pyqtdeploy: a GUI tool for building your app
(I suppose you could also use pyqtdeploycli to build your app, passing it a configuration file. But using the GUI pyqtdeploy is much more intuitive and easy.)
The pyqtdeploy tools don’t actually deploy. They just prepare for deploy. They may create or touch:
- source files (.c, .cpp and .py)
- qmake projects (.pro)
- make files (Makefile)
Subsequently you must continue to build using qmake, make, and other tools such as Qt Creator and Xcode. Then you have a binary, executable app.
Qt Creator does not deploy to the App Store
You must read QT Platform Notes – iOS very carefully. It says that Qt Creator will do everything for building a Qt iOS app except: deploy to the App Store.
You don’t need to use Qt Creator, you can use only command line tools (and then possibly the Xcode GUI.)
But this is related to the difference between the iosSimulator and a real device: they use different ABI architectures. You should think early about whether you will use Qt Creator, and whether you will use the iosSimulator or a real iOS device. You must fork the process of building early, when you are building static libraries (for either iosSimulator/ i386 architecture, or a real device/ ARM architecture.)
(Will Qt Creator deploy to Google Play store?)
Choosing a toolchain
This is related to choosing a machine for deployment.
Ideally, you learn and use one toolchain that works for every platform (avoid the learning curve for some tools.)
- use pyqtdeploy/qmake/Xcode/real iOS device for iOS
- use pyqtdeploy/qmake/Xcode/real Android device for Android
But for Android I have also used, with mixed results:
- pyqtdeploy/Qt Creator/real Android device
- pyqtdeploy/qmake/command line scripts/real Android device
I’m not sure whether I need to learn and use the emulator/simulator tools to do sanity testing across device models (e.g. iPhone vs. iPad) and OS versions (e.g. iOSv7 vs iOSv8.)