到目前为止,我一直坚持以下程序: - 在项目上调用 qmake - 调用 make
但是查看 Qt Creator 为特定项目(QML 插件)发出的命令,我发现了另一个过程:
在发布完整代码之前总结一下,对于一个有 2 个头文件和 2 个 cpp 文件的项目,我收到 2 次 g++ 调用,然后是 moc 调用,另一个 g++,另一个 moc,最后还有 2 个 g++ 调用,总共 7 个调用, 5 到 g++ 和 2 到 moc。
也许有人可以向我解释为什么需要这么多电话以及每个电话具体做什么?当然,我确实有一些想法,我看到了对 moc 和两个用户类的两次调用,但我仍然不明白所有调用的原因以及它们特定排序的原因。
这是完整的代码(格式化以使其更具可读性):
arm-linux-androideabi-g++
-c
-Wno-psabi
-march=armv7-a
-mfloat-abi=softfp
-mfpu=vfp
-ffunction-sections
-funwind-tables
-fstack-protector
-fno-short-enums
-DANDROID
-Wa,--noexecstack
-std=gnu++0x
-O2
-mthumb
-Os
-fomit-frame-pointer
-fno-strict-aliasing
-finline-limit=64
-D_REENTRANT
-Wall
-Wno-psabi
-W
-fPIC
-DQT_NO_DEBUG
-DQT_PLUGIN
-DQT_QUICK_LIB
-DQT_QML_LIB
-DQT_NETWORK_LIB
-DQT_GUI_LIB
-DQT_CORE_LIB
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\mkspecs\android-g++
-I..\plugin
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtQuick
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtQml
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtNetwork
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtGui
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtCore
-I.
-I..\..\..\Android\android-ndk-r9d\sources\cxx-stl\gnu-libstdc++\4.8\include
-I..\..\..\Android\android-ndk-r9d\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include
-I..\..\..\Android\android-ndk-r9d\platforms\android-19\arch-arm\usr\include
-I.
-o plugin_plugin.obj ..\plugin\plugin_plugin.cpp
______________________________________________
arm-linux-androideabi-g++
-c
-Wno-psabi
-march=armv7-a
-mfloat-abi=softfp
-mfpu=vfp
-ffunction-sections
-funwind-tables
-fstack-protector
-fno-short-enums
-DANDROID
-Wa,--noexecstack
-std=gnu++0x
-O2
-mthumb
-Os
-fomit-frame-pointer
-fno-strict-aliasing
-finline-limit=64
-D_REENTRANT
-Wall
-Wno-psabi
-W
-fPIC
-DQT_NO_DEBUG
-DQT_PLUGIN
-DQT_QUICK_LIB
-DQT_QML_LIB
-DQT_NETWORK_LIB
-DQT_GUI_LIB
-DQT_CORE_LIB
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\mkspecs\android-g++
-I..\plugin
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtQuick
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtQml
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtNetwork
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtGui
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtCore
-I.
-I..\..\..\Android\android-ndk-r9d\sources\cxx-stl\gnu-libstdc++\4.8\include
-I..\..\..\Android\android-ndk-r9d\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include
-I..\..\..\Android\android-ndk-r9d\platforms\android-19\arch-arm\usr\include
-I.
-o myitem.obj
..\plugin\myitem.cpp
______________________________________________
moc.exe
-DQT_NO_DEBUG
-DQT_PLUGIN
-DQT_QUICK_LIB
-DQT_QML_LIB
-DQT_NETWORK_LIB
-DQT_GUI_LIB
-DQT_CORE_LIB
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\mkspecs\android-g++
-I..\plugin -IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtQuick
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtQml
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtNetwork
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtGui
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtCore
-I.
-I..\..\..\Android\android-ndk-r9d\sources\cxx-stl\gnu-libstdc++\4.8\include
-I..\..\..\Android\android-ndk-r9d\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include
-I..\..\..\Android\android-ndk-r9d\platforms\android-19\arch-arm\usr\include
-I.
-I/usr/include -I/usr/local/include
..\plugin\plugin_plugin.h -o moc_plugin_plugin.cpp
______________________________________________
arm-linux-androideabi-g++
-c
-Wno-psabi
-march=armv7-a
-mfloat-abi=softfp
-mfpu=vfp
-ffunction-sections
-funwind-tables
-fstack-protector
-fno-short-enums
-DANDROID
-Wa,--noexecstack
-std=gnu++0x
-O2
-mthumb
-Os
-fomit-frame-pointer
-fno-strict-aliasing
-finline-limit=64
-D_REENTRANT
-Wall
-Wno-psabi
-W
-fPIC
-DQT_NO_DEBUG
-DQT_PLUGIN
-DQT_QUICK_LIB
-DQT_QML_LIB
-DQT_NETWORK_LIB
-DQT_GUI_LIB
-DQT_CORE_LIB
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\mkspecs\android-g++
-I..\plugin
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtQuick
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtQml
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtNetwork
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtGui
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtCore
-I.
-I..\..\..\Android\android-ndk-r9d\sources\cxx-stl\gnu-libstdc++\4.8\include
-I..\..\..\Android\android-ndk-r9d\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include
-I..\..\..\Android\android-ndk-r9d\platforms\android-19\arch-arm\usr\include
-I.
-o moc_plugin_plugin.obj
moc_plugin_plugin.cpp
______________________________________________
moc.exe
-DQT_NO_DEBUG
-DQT_PLUGIN
-DQT_QUICK_LIB
-DQT_QML_LIB
-DQT_NETWORK_LIB
-DQT_GUI_LIB
-DQT_CORE_LIB
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\mkspecs\android-g++
-I..\plugin -IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtQuick
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtQml
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtNetwork
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtGui
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtCore
-I.
-I..\..\..\Android\android-ndk-r9d\sources\cxx-stl\gnu-libstdc++\4.8\include
-I..\..\..\Android\android-ndk-r9d\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include
-I..\..\..\Android\android-ndk-r9d\platforms\android-19\arch-arm\usr\include
-I. -I/usr/include -I/usr/local/include ..\plugin\myitem.h -o moc_myitem.cpp
______________________________________________
arm-linux-androideabi-g++
-c
-Wno-psabi
-march=armv7-a
-mfloat-abi=softfp
-mfpu=vfp
-ffunction-sections
-funwind-tables
-fstack-protector
-fno-short-enums
-DANDROID
-Wa,--noexecstack
-std=gnu++0x
-O2
-mthumb
-Os
-fomit-frame-pointer
-fno-strict-aliasing
-finline-limit=64
-D_REENTRANT
-Wall
-Wno-psabi
-W
-fPIC
-DQT_NO_DEBUG
-DQT_PLUGIN
-DQT_QUICK_LIB
-DQT_QML_LIB
-DQT_NETWORK_LIB
-DQT_GUI_LIB
-DQT_CORE_LIB
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\mkspecs\android-g++
-I..\plugin -IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtQuick
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtQml
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtNetwork
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtGui
-IC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\include\QtCore
-I.
-I..\..\..\Android\android-ndk-r9d\sources\cxx-stl\gnu-libstdc++\4.8\include
-I..\..\..\Android\android-ndk-r9d\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include
-I..\..\..\Android\android-ndk-r9d\platforms\android-19\arch-arm\usr\include
-I. -o moc_myitem.obj
moc_myitem.cpp
del libplugin.so
______________________________________________
arm-linux-androideabi-g++
--sysroot=D:\Android\android-ndk-r9d/platforms/android-19/arch-arm/
-Wl,--no-undefined
-Wl,-z,noexecstack
-shared
-o
libplugin.so
plugin_plugin.obj
myitem.obj
moc_plugin_plugin.obj
moc_myitem.obj
-LD:\Android\android-ndk-r9d/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a
-LD:\Android\android-ndk-r9d/platforms/android-19/arch-arm//usr/lib
-LC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7\lib -lQt5Quick
-Lc:\Utils\android\ndk/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a
-Lc:\Utils\android\ndk/platforms/android-9/arch-arm//usr/lib
-LC:\Utils\icu32_51_1_mingw48\lib -LC:\utils\postgresql\pgsql\lib
-LC:\utils\mysql\mysql\lib -LC:\Utils\pgsql\lib
-LC:\temp\opensll-android-master\openssl-android-master\lib
-LC:\Qt\Qt5.2.1_Android\5.2.1\android_armv7/lib
-lQt5Qml
-lQt5Network
-lQt5Gui
-lQt5Core
-lGLESv2
-lgnustl_shared
-llog
-lz
-lm
-ldl
-lc
-lgcc