Что собирается в QT из минимально необходимого

Примечательно , что нам не избавится никак от включения модулей QtXml и 3rdparty\zlib при настройке через утилиту config.exe.

Вот первый файл qisciicodec.cpp компиляции минимального проекта .

g++ -c -O2 -fexceptions -mthreads -Wall -fno-rtti -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_BOOTSTRAPPED -DQT_LITE_UNICODE -DQT_NO_CAST_FROM_ASCII -DQT_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 -DQT_NO_DYNAMIC_CAST -I"..\..\..\include" -I"..\..\..\include\QtCore" -I"..\..\..\include\QtXml" -I"..\..\3rdparty\zlib" -I"c:\QtSDK1.2.1\Desktop\Qt\4.8.1\mingw\mkspecs\win32-g++" -o tmp\obj\release_static\qisciicodec.o ..\..\corelib\codecs\qisciicodec.cpp

-c Compile and assemble, but do not link
-O включить оптимизацию

-fexceptions - Enable exception handling
-mthreads - Use Mingw-specific thread support
-Wall
-fno-rtti
-DUNICODE установка параметра (точнее его наличие), аналогично #define в начале файла. То есть делаем например #define QT_BOOTSTRAPPED для примера выше при компиляции qisciicodec.cpp.

Кстати QT_BOOTSTRAPPED в qisciicodec.cpp не встречается , то есть это можно убрать.

Таким образом первым собирается corelib\codecs. Это все что связано с преобразованием разных кодировок , class QTextCodec и т.д. Там просто разные функции преобрахования кодировок.

qlatincodec.cpp
qsimplecodec.cpp
qtextcodec.cpp
qtsciicodec.cpp
qutfcodec.cpp

Потом идет каталог corelib\global :

qglobal.cpp
qmalloc.cpp динамическое выделение памяти (куда ж без него)
qnumeric.cpp

Потом идет каталог corelib\io . Здесь все , что связано с файловой системой:

qabstractfileengine.cpp
qbuffer.cpp
qdatastream.cpp
qdir.cpp
qdiriterator.cpp
qfile.cpp
qfileinfo.cpp
qfilesystementry.cpp
qfilesystemengine.cpp
qfsfileengine.cpp
qfsfileengine_iterator.cpp
qiodevice.cpp
qtemporaryfile.cpp
qtextstream.cpp
qurl.cpp

и так далее и тому подобное ...

MOC

Но в какой-то момент появляется нечто новое при компиляции , а именно moc.exe - это так называемый препроцессор , который обрабатывает файлы h в которых прописаны СПЕЦИАЛЬНЫЕ макросы. Это основная парадигма Qt - создание механизма сигнал /слот. (Class QObject) . Также это основа так называемой метаобъектной системы.

mingw32-make.exe[2]: Entering directory `C:/QtSDK1.2.1/QtSources/4.8.1/src/corelib'
C:\QtSDK1.2.1\QtSources\4.8.1\bin\moc.exe -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_BUILD_CORE_LIB -DQT_NO_USING_NAMESPACE -DQT_ASCII_CAST_WARNINGS -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -D_USE_MATH_DEFINES -DQLIBRARYINFO_EPOCROOT -DHB_EXPORT=Q_CORE_EXPORT -DQT_NO_DEBUG -DQT_NO_DYNAMIC_CAST -I"..\..\include" -I"..\..\include\QtCore" -I"tmp\rcc\release_static" -I"tmp" -I"global" -I"..\..\tools\shared" -I"..\3rdparty\zlib" -I"..\3rdparty\harfbuzz\src" -I"..\3rdparty\md5" -I"..\3rdparty\md4" -I"..\..\include\ActiveQt" -I"tmp\moc\release_static" -I"c:\QtSDK1.2.1\Desktop\Qt\4.8.1\mingw\mkspecs\win32-
g++" -D__GNUC__ -DWIN32 animation\qabstractanimation.h -o tmp\moc\release_static\moc_qabstractanimation.cpp

Что делает moc.exe (при первом рассмотрении) . Видим что у qabstractanimation.h класс наследуется от QObject и создает на основании этого в специальном каталоге файл cpp файл tmp\moc\release_static\moc_qabstractanimation.cpp, который становится частью вашего проекта. moc_qabstractanimation.cpp просто расширяет функционал нашего проекта.

Файлы для скачивания