[solved] QT Creator 5.0.2 static build
-
So after no one could help me in the german forum i give it a try in the english one.
My problem is easy and if i belive all the threads here the soluion is easy, too.
I made a small program with QT Creator and now i want to have a stand-alone .exe I installed QT 5.0.2 with the source. i tried to build qt static and i think i did it. But the builded programms are still not staticly.
What i want is simple. in the left down corner you can select what project should be build and if it should be release or debugg. i would like to have an other option static release.
The main problem i have is that all the path shown in the tuts are not the same i have. Also everybody says edit the mekspec config.
Add -static at QMAKE_LFLAGS = ... just before all the other options. but there are no other option by default.When doing the confoguration for building qt i cannot choose -no-exceptions. it simply doesn't exist.
I really hope someone can explain me how to build my programs staticly.
a i forget i use the minGW compiler. and windows 8Thank you
-
welcome to devnet
In order to build a static application, you need a static build of Qt libs first. All pre-compiled Qt libs are dynamic.
First you need to make your own static Qt libs. However, you need to be aware of the license issues when you like to distribute your application.
Second you can compile your application as statatic and link with your set of static Qt libs.
AFAIK it is still better to download the "Qt source from here.":http://download.qt-project.org/official_releases/qt/4.8/4.8.4/qt-everywhere-opensource-src-4.8.4.zip You cannot simply recompile statically the source delivered with another build.
[edit, there is also a "wiki entry":http://qt-project.org/wiki/Build_Static_Qt_For_Windows_With_Gcc_German for static build Qt libs in German. A bit dusty :-( ]
-
Thank you so much. I always just found this download page
http://qt-project.org/downloadsI will have a look at this in the noon.
And thank you for the german wiki. -
mh i have some problem with this again.
So i now have installed: QT Creator 5.0.2 32bit MinGW.
The files you gave me.
The Path are:
C:\Qt\Qt5.0.2...
C:\Qt\Qt static...in C:\Qt\Qt static\mkspecs\win32-g++\qmake.conf i changed the following:
QMAKE_CFLAGS_RELEASE = -Os -momit-leaf-frame-pointer | removed the other things
QMAKE_LFLAGS = -static -static-libgcc … | added this, there where nothing by default
DEFINES += QT_STATIC_BUILD | removed the other thingsC:\Qt\Qt static\qmake\Makefile.win32-g++:
LFLAGS = -static -static-libgcc … | so now it looks like -static -static-libgcc -s
C:\Qt\Qt static\src\3rdparty\webkit\Source\WebKit.pri :
CONFIG += staticlib added this at line 2.
Than i startet the console from QT Creator 5.0.2 changed to C:\Qt\Qt static
my inputs:
configure -static -release -platform win32-g++ -no-exceptions
o
yThe last output lines:
mingw32-make: *** No rule to make target 'C:\Qt\Qt', needed by 'project.o'. Stop.
del many o-files
C:\Qt\Qt static\qmake\project.o konnte nicht gefunden werden
mingw32-make: *** No rule to make target 'C:\Qt\Qt' needed by 'project.o'. Stop
Building qmake failed, return code 2I hope you can help me
-
hmmm ??
I have not build Qt 5.0 myself in any version yet. Unfortunately, the static build I did was under Linux with Qt 4.6.x version. That was really very easy besides the waiting time. No changes of conf files required IIRC.
You need to make sure that another version is available through the path settings I guess. However, that should be already the case anyway, otherwise you have not compiled apparently already a lot of stuff.
Oh, I think i t could be the forward/backward slash problem. If you have typed in the files somewhere a path, you have to use '/' the backward version is often used for continuation lines. The forward slash is standard in Linux but Windows understands it too. Everything with folder separation in Qt should be done with forward slash '/'. Saves a lot of trouble.
Furthermore, if you have decided the folder name "C:\Qt\Qt static", use something with a space e.g. "C:/Qt/Qt_static" should be fine.
-
ok the / \ thing i managed it was the qt space static now it made a lot more things, but no i get error return 3 :D
What is the maximum error code?? XD
But seams to be something simple
Generating Makefiles...
Failure to read QMAKESPEC conf file c:\QT\QT5.0.2\Src\qtbase\mkspecs\win32-g++\qmake.conf.
Error processing project file: C:/QT/QT_static/Projects.pro
Qmake failed, return code 3So why is the qmake process doing something in the Qt5.0.2 folder?? it shouldn't
-
WUHU the first step runs without problems :D
I added the QDIR in the enviroment Variables in the past and that showed to the wrong path :D changed, restart and than it worked :D
but not the mingw32-make -.-
@C:\Qt\Qt_static>mingw32-make sub-src
cd src\tools\bootstrap\ && mingw32-make -f Makefile
mingw32-make[1]: Entering directory 'C:/Qt/Qt_static/src/tools/bootstrap'
mingw32-make -f Makefile.Release
mingw32-make[2]: Entering directory 'C:/Qt/Qt_static/src/tools/bootstrap'
g++ -c -pipe -Os -momit-leaf-frame-pointer -frtti -fno-exceptions -Wall -Wextra
-DQT_STATIC_BUILD -DQT_BOOTSTRAPPED -DQT_LITE_UNICODE -DQT_NO_CAST_FROM_ASCII -D
QT_NO_CAST_TO_ASCII -DQT_NO_CODECS -DQT_NO_DATASTREAM -DQT_NO_GEOM_VARIANT -DQT_
NO_LIBRARY -DQT_NO_QOBJECT -DQT_NO_STL -DQT_NO_SYSTEMLOCALE -DQT_NO_TEXTSTREAM -
DQT_NO_THREAD -DQT_NO_UNICODETABLES -DQT_NO_USING_NAMESPACE -DQT_NO_DEPRECATED -
DQT_NODLL -I"......\include" -I"......\include\QtCore" -I"......\include\Q
tXml" -I"......\mkspecs\win32-g++" -o tmp\obj\release_static\qglobal.o ....\c
orelib\global\qglobal.cpp
....\corelib\global\qglobal.cpp: In function 'QString qt_error_string(int)':
....\corelib\global\qglobal.cpp:2192:27: error: cannot convert 'LPWSTR {aka wch
ar_t*}' to 'LPSTR {aka char*}' for argument '5' to 'DWORD FormatMessageA(DWORD,
LPCVOID, DWORD, DWORD, LPSTR, DWORD, char**)'
Makefile.Release:998: recipe for target 'tmp/obj/release_static/qglobal.o' faile
d
mingw32-make[2]: *** [tmp/obj/release_static/qglobal.o] Error 1
mingw32-make[2]: Leaving directory 'C:/Qt/Qt_static/src/tools/bootstrap'
Makefile:34: recipe for target 'release' failed
mingw32-make[1]: *** [release] Error 2
mingw32-make[1]: Leaving directory 'C:/Qt/Qt_static/src/tools/bootstrap'
makefile:1365: recipe for target 'sub-tools-bootstrap-sub_src_target_ordered' fa
iled
mingw32-make: *** [sub-tools-bootstrap-sub_src_target_ordered] Error 2C:\Qt\Qt_static>
@hope this says something to you. Google sayed there is something wrong with the unicode (?) but not how to fix
-
i did not a clean, because i made the steps from the wiki to clean up and it seams to me to be clean.
settings are:
-static -platfrom win32-g++ -release -no-exceptions -
Do not know if this is enough.
At the end of configure it says something like
@
To reconfigure, run 'make confclean' and 'configure'
@This text I have copied from the linux configure file, but the windows version displays something similar.
In your case probably
@
To reconfigure, run 'mingw32-make confclean' and 'configure'
@A mixture of settings from your previous trials is my only explanation at the moment. So a confclean would be helpful.
I doubt that this is general problem, because it would be a bug.
-
still the same problem. At an other PC it worked. to build QT staticly, but it couldn't build the project
-
Jep i found it. fopr me i did all the steps i should do befor starting building. for the other i didn't. ANd i now know what the problem was. in makfile.conf the Define line says something about unicode. the last time i deletet all and replaced with the thing from the tut. this time i added the part from the tut and sice 1 hour it's building :D
-
Hi,
yes i think i'll make a report of what i made to get it running.
but before i need you help again.
I have no problem with building. The exe is 164.431KB big.
looks good i think. But when open it nothing happens. and if i run it with QT i get the messege
Programm abgestürzt ..... Rückgabewert -1073741819
something know about this?? -
Well, what can I say besides that your app crashed :-(
You need to use the debugger and step through to the point where the app is crashing. Alternatively, you have to do it like our ancestors ( nach alter Väters Sitte ) put in some output statements where you think the application steps through.
With MinGW you can use gdb for debugging. When debugging you can look at the values, if there is something wrong and stuff. If you haven't done before, it is good thing to look at, if you have done before, sorry for telling the obvious stuff.
Sometimes it is good to make a mixed approach debugging and output statements. BTW for output during your debug session "qDebug()":http://qt-project.org/doc/qt-5.0/qtcore/qdebug.html is very helpful. You can do a lot of neat stuff with it.
You can use more or less as cerr and cout in standard c++.
By summarizing your findings you can update the wiki entry. Typically you have only a few things to add. So, it could be less work than writing a complete entry.
-
thanks for the link to the debug Class. That's really new for me.
Normaly i debugg with couts :D
the problem is, that this programm i wanted to be static has no errors.
because it's a complete clean new QT applicattion.
just made
file>new>qt c++ application>next>next......
added CONFIG += static in the .pro file, build. and that's it. the building toke a very long time, but there where no errors. -
BTW it is Qt. QT stands for QuickTime.
Oh, you got a "hello world" test application only. Or is it more?
You are writing of a long compile time. What do you mean with long?I would assume that the problem is with the compile settings. A mixture of the "kit/tool chain". I doubt that just adding "static" to the .pro will do the job.
To use qdebug I can really recommend. I used Qt already for a couple of years until I have started with qDebug. It looked cumbersome and why should you use when cout and cerr is available. However, together with Qt creator it makes sense and also you can more easily redirect the output stuff (e.g. to a file or a socket).
-
it's even less than a hello world. its an empty window that should apear.
with long time i mean it seams to me to be minuts, but i think in real it was a bout 30 sec. for complex programms i made without static let'a take an Image Filter prgm it was just a few sec.
i'll have a look at my test prgm in the afternoon. i have no pc here at the moment.