[Solved] Problem building Qt statically in Windows
Hi,
I’m trying to deploy a small project by creating an executable file that works out of the box in Windows, so I need to compile Qt sources statically. I use the following configure command:
- configure -release -static -platform win32-g++ -nomake examples -nomake demos -no-exceptions -no-stl -no-rtti -no-qt3support -no-scripttools -no-openssl -no-opengl -no-webkit -no-phonon -no-style-motif -no-style-cde -no-style-cleanlooks -no-style-plastique -no-sql-sqlite -no-declarative -qt-sql-mysql -I C:\mysql\include -L C:\mysql\lib\opt -l mysql
Then I run mingw32-make. After some time compiling (more than half an hour, just in case that’s relevant) I get the following output:
- [...]
- g++ -c -Os -momit-leaf-frame-pointer -fno-exceptions -Wall -fno-rtti -DUNICODE -DQT_LARGEFILE_SUPPORT -DQDOC2_COMPAT -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_XML_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_THREAD_SUPPORT -DQT_NO_DYNAMIC_CAST -I"..\..\include\QtCore" -I"..\..\include\QtXml" -I"..\..\include" -I"c:\mysql\include" -I"..\..\include\QtDeclarative" -I"declarativeparser" -I"..\..\include\ActiveQt" -I"tmp\moc\release_static" -I"..\..\mkspecs\win32-g++" -o tmp\obj\release_static\cppcodemarker.o cppcodemarker.cpp
- cppcodemarker.cpp: In member function 'QString CppCodeMarker::addMarkUp(const QString&, const Node*, const Location&)':
- cppcodemarker.cpp:950: error: 'isalpha' was not declared in this scope
- cppcodemarker.cpp:956: error: 'isalnum' was not declared in this scope
- cppcodemarker.cpp:973: error: 'isdigit' was not declared in this scope
- cppcodemarker.cpp:977: error: 'isalnum' was not declared in this scope
- cppcodemarker.cpp: At global scope:
- cppcodemarker.cpp:879: warning: 'QString untabified(const QString&)' defined but not used
- mingw32-make[3]: *** [tmp/obj/release_static/cppcodemarker.o] Error 1
- mingw32-make[2]: *** [release] Error 2
- mingw32-make[2]: Leaving directory `C:/Users/Arturo/Desktop/Qt/tools/qdoc3'
- mingw32-make[1]: *** [sub-qdoc3-make_default-ordered] Error 2
- mingw32-make: *** [sub-tools-make_default-ordered] Error 2
Can anybody give me any hints about what’s wrong?
Some additional info: I work in Windows 7, and I use gcc + MinGW to compile. The Qt sources are version 4.7.4, and I include the Qt MySQL plugin and the MySQL library.
6 replies
you should restrict the static build on the libs.
Have a look at this wiki page [developer.qt.nokia.com]
Regard the changes, that the wiki article describe. without them, itv was not compilable, as some modules do not support static building by default.
Yeah, I applied them, except the one related to the WebKit, which I don’t use.
The problem in my case was related to the -no-stl option (isAlpha) seems to be an STL function). By removing -no-stl from the configure line the problem was solved for me.
I was a bit puzzled about that, cause I thought isAlpha was part of the standard C library, and not of STL. Maybe I got something wrong… But anyway, restricting the compilation to just the Qt libraries, as suggested by Gerolf, solved the problem for me.
Thank you all for your replies.
To correct
cppcodemarker.cpp:950: error: ‘isalpha’ was not declared in this scope
cppcodemarker.cpp:956: error: ‘isalnum’ was not declared in this scope
cppcodemarker.cpp:973: error: ‘isdigit’ was not declared in this scope
cppcodemarker.cpp:977: error: ‘isalnum’ was not declared in this scope
In tools/qdoc3/cppcodemarker.cpp
just add
#include “ctype.h”
to the list of #includes at the start of the file
This fixed it for my system
You must log in to post a reply. Not a member yet? Register here!


