Deploy QT apps in Mac OS X - c++

I have created an app in QT & I am able to deploy it in Windows.
But in Mac I am facing problems.
Can any one help me how to do this?
I am using the commands as said in help files & when I type qmake -config release i get ::::"Failure to open file: /Developer/Examples/Qt/mainwindows/application///application.xcodeproj/project.p­bxproj Unable to generate makefile for: /Developer/Examples/Qt/mainwindows/application/application.pro"

With the lack of information regarding the problem that you are facing I can only recomend you to read the info provided in the Qt Reference Documentation.
http://doc.trolltech.com/4.7/deployment-mac.html

Related

Qmake on Windows

I have a project written in Qt that I have no problems compiling and running on Linux. The command line is:
qmake ../trunk/GSDTesting.pro
The process on Linux was really simple: install a few dependencies using apt and you are off.
My task is to recompile the same program on Windows using Visual Studio C++ compiler, but the problem is I don't know how to start. There is no such thing as qmake for Windows.
Can someone give me a few hints where to start. Please note that I don't know QT almost at all, my task is just to debug some issue unrelated to QT.
Are you using terminal exclusively on Windows? If so, maybe this image of example build steps straight from Qt Creater 4.14.2 may help you:
As you can see the image of the default Qt creator build steps list the file path where 'qmake.exe' can be located on a local installation of the toolchain.
If you can use a machine with a display I find using the Qt creator GUI is not all that bad.
Here is a link to the base get started page:
https://doc.qt.io/qt-5/gettingstarted.html
Here is a link to the installer download page:
https://www.qt.io/download
IMPORTANT:
You will need to make a Qt account, login to your account, and then download the open-source version of the API. The commercial version of the same source is acquired differently/seperately.
Otherwise, if you cannot use the GUI, can I request some clarification on why you cannot use Qt creator on your Windows installation?

Cannot run Qt Creator GUI outside of Qt. "The application was unable to start correctly (0xc000007b)" error

I downloaded C++ code from GitHub to tag images for training an object detector using Machine Learning.
Within Qt Creator 4.2.1 Based on Qt 5.8.0 (MSVC 2015, 32bit), I was able to compile and run the code. Unfortunately, I was not able to run the .exe outside of Qt Creator.
Initially, I received an error that
"The program can't start because libgcc_s_dw2-1.dll is missing".
Thanks to
QT The program can't start because libgcc_s_dw2-1.dll is missing, that was fixed easily by adding
"QMAKE_LFLAGS += -static"
to the .pro file. Now, when I run it I get
"The application was unable to start correctly (0xc000007b). Click OK to close the application."
I was able to reproduce the error using the simple "Hello World" default project that appears when you create a Qt Widget Application. This led me to believe something was wrong with my installation.
Based on the advice of this article: https://stackoverflow.com/questions/12099117/32-bit-qt-application-on-win-7-x64-wont-run-but-runs-fine-from-qt-creator, I used Dependency Walker to identify possible causes. I expected to see only a few items that I can follow up on. Instead, I received a list of close to 100 missing .dll files. All the files started with
"API-MS-WIN ###.DLL" or "EXT-MS ###.DLL"
where ### represent some additional text characters, for example;
"API-MS-WIN-SHCORE-STREAM-WINRT-L1-1-0.DLL"
I'm attaching a sample output.
Another suggestion was to copy over
libwinpthread-1.dll, libstdc++-6.dll, libgcc_s_dw2-1.dll.
That did not work either.
My next move was to simply get the latest version of QT and wish for the best. I installed Qt Creator 4.8.1 Based on At 5.12.0 (MSVC 2015, 32 bit). This time, I could not even get the code to run in the IDE. I received 1000+ error messages!
Based on advice from several pages, I added
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
to the .pro file and it still would not compile.
Also, I verified that the application is being built as a 32bit application. I'm running on a 64 bit Windows 10 system.
If anyone would like to take a crack at it to see if they can create a working .exe, here is the link: github.com/clavicule/BBTag
Qt provides a tool to copy the necessary dlls to the folder of your executable.
The tools is called windeployqt.exe and comes with your Qt installation. For me it is located at C:\Qt\5.9.1\msvc2015_64\bin\windeployqt.exe. You will have to look at your installation path and probably the msvc_32 folder to find it.
Then you go to the folder with your executable in it, oben a command prompt or powershell and execute path\to\windeployqt.exe yourProgram.exe and it will automatically copy the necessary dll files to this folder. Afterwards you can run your program without issues.
The official documentation for the tool can be found here.
Alternative 1: While developing you could use QtCreator which automatically adds the paths to the dlls when running your program - make sure to include them if you deploy your program!
Alternative 2: Add the path to the necessary dlls to your PATH variable. This isn't recommended either, since everyone who gets your program would have to do the same to run it.
I figured it out! My installation of Anaconda (a Python distribution popular for data science and machine learning) is the culprit.
From: #remy-lebeau
The application was unable to start correctly (0xc000007b)
The error:
"The application was unable to start correctly (0xc000007b) ..."
is a good indicator that the 32-bit app tried to load a 64-bit DLL. At first, this did not make sense since I verified many times that I was using the 32 bit version of Qt.
It turns out that the installation of the 64 bit version of Anaconda also contained many Qt5 dlls used for the PyQt5 package. Since the path to this folder came before the path to my c:\Qt...\bin folder, it was used in the build instead of the actual 32 bit version installed with Qt. This was not obvious because I was unaware of PyQt5 so I had no idea that it came with Anaconda. A simple reordering of the path entries using the System Environment Variables interface AND a system restart fixed the problem.
Silver lining: I now know C++ and designing GUIs w/ QT and PyQt5
Thanks #albertmand and #jwernerny

Running projects from QtCreator after cmake install

have some real trouble with QtCreator on ubuntu 18 and was wondering if anyone could give me any help. This morning I installed cmake for another project I was working on, now when I try to run a project in qtcreator it is trying to deploy it via FTP, even though it is a Qt c++ project. I dont know if this is anything to do with cmake, but this worked last night before I installed it. My question is, can anybody explain to me how to run a project from QtCreator, on the local system( Terminal or otherwise, doesnt matter ) without any deployment issues. Im sorry if this is a stupid question, but I am extremely grateful for any hep
In a console, you can just cd into the project directory (where the .pro file resides) and execute "qmake" and then "make". That should compile your executable which you can then run using "./[executable filename]" or "/[path]/[executable filename]". Also, on the console you might see where this FTP transfer comes from. Also, in QtCreator you can set the build system and change that from cmake to something else to see if its a cmake problem.
So, not sure how this issue came up, but I have found a workaround after much trial and error. Open a project, In the left tab click Projects and under build and run select Run. In this menu deploy steps have already been added when i create a project, so these need to be deleted. Now in the Run section on the same screen Click add -> Custom executable and select the file that has already been built for the project in question. In my case this solves the above problem, but does not explain why QtCreator is trying to deploy C++ projects via FTP. If anyone out there is struggling with this issue feel free to post a question here and I will assist as much as possible!

Offline Qt Documentation

I am trying to compile QDoc following the steps given here https://wiki.qt.io/Building_Qt_Documentation. I am trying to compile QDoc without building the whole Qt project. I use mingw in windows 10. I run first configure in the main qt directory, then configure in qtbase, then make in qtbase. I am going then in the qtdeclarative directory and try to compile sub-qmldevtools as explained in the tutorial. Unfortunately the target is not recognized and no compiling occurs. Can anyone help ?
I have finally installed the QtDocs. For Qt 5.8 it worked almost as here: https://wiki.qt.io/Building_Qt_Documentation except for make qmake_all should be called immediately after configure is called in the root directory of the sources. Also i had to compile qtattributionsscanner from qttools for the make html_docs to work.
Alternatively to compiling the documentation one could also use zealdocs, that is one offline help tool for varios software APIs.

How to make a standalone mac app using qtcreator

I have build an app using C++ and Qt on QtCreator. The result is a .app file.
Now, when I am running it from the Qt Creator it is running fine.
But when I am running it on a different machine (with no Qt installed) it is not running.
I have figured out the reason is because my .app file is not deployed properly (as there is no framework folder added in the .app)
But I am now having trouble solving it. I am following this link but not getting anywhere as it for console purely.
Is there a way I can fix it using Qt Creator?
A Qt application relies upon Qt's libraries, which must be shipped with the application, inside the built application bundle. The steps for deploying a Qt application for OS X are detailed in the documentation.
If you're not using any other libraries, besides those of Qt, you just need to run the tool macdeployqt, which is part of the Qt installation, in the bin directory. You can set this up to run as a build step in Qt Creator, but I suggest only doing it before you actually deploy the final bundle to another machine.
Calling macdeployqt will copy the necessary Qt frameworks into the bundle and setup the paths to the frameworks so that the binary in the bundle knows where to find them.
If you use any other frameworks or libraries, you need to copy those yourself and set the references to them using install_name_tool