diff --git a/README b/README index 61880cf0678657303c85d0321beaf827cfe27e50..20b08ce3460242f12d679fb36e9c6bbf2ab20f5a 100644 --- a/README +++ b/README @@ -26,6 +26,31 @@ cd $BUILD_DIRECTORY qmake $SOURCE_DIRECTORY/qtcreator.pro make (or mingw32-make or nmake or jom, depending on your platform) +QmlDesigner, QmlInspector require private headers +------------------------------------------------- + +The QmlDesigner and QmlInspector plugins depend on "private" Qt headers, +specifically from the QtDeclarative module. These private headers always end +with an "_p.h", and Nokia does not make any promises to keep the files or API's +binary or source compatible between releases. This means that when compiled, +the two plugins have a dependency to the exact Qt version they were compiled +with. Running Qt Creator with the plugins against updated Qt libraries (also for +patch releases) might lead to link time failures, or even crashes. + +If you want to disable the plugins, you can pass "QT_PRIVATE_HEADERS=" to qmake: + + qmake "QT_PRIVATE_HEADERS=" $SOURCE_DIRECTORY/qtcreator.pro + +Anyhow, the plugins will not be compiled when the private header files needed +are not found. This might be the case when you are using a Qt version from your +distribution, or when you installed your self-compiled Qt to a separate +directory via 'make install'. You can fix this by either re-building your Qt +with the "-developer-build" configure option, or pass the include directory in +the source directory to qmake, e.g. + + qmake "QT_PRIVATE_HEADERS=$$QT_SOURCE_TREE/include" $SOURCE_DIRECTORY/qtcreator.pro + + Third-party components ====================== Qt Creator includes the following third-party components, diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro index 047e9c031852e79535432454ad4746cf42fa674c..7d2da3f0fcb3905b5102bcf357ce888e78b42492 100644 --- a/src/plugins/plugins.pro +++ b/src/plugins/plugins.pro @@ -37,13 +37,25 @@ SUBDIRS = plugin_coreplugin \ contains(QT_CONFIG, declarative) { - SUBDIRS += plugin_qmlprojectmanager \ - plugin_qmlinspector + SUBDIRS += plugin_qmlprojectmanager - exists($$[QT_INSTALL_HEADERS]/QtDeclarative/private/qdeclarativecontext_p.h) { - SUBDIRS += plugin_qmldesigner + # Try to find location of Qt private headers (see README) + + isEmpty(QT_PRIVATE_HEADERS) { + QT_PRIVATE_HEADERS = $$[QT_INSTALL_HEADERS] + } else { + INCLUDEPATH += QT_PRIVATE_HEADERS + } + + exists($$QT_PRIVATE_HEADERS/QtDeclarative/private/qdeclarativecontext_p.h) { + SUBDIRS += plugin_qmldesigner \ + plugin_qmlinspector } else { - warning("QmlDesigner plugin disabled! It depends on private headers from QtDeclarative module, which seems not to be installed.") + warning() + warning("QmlDesigner and QmlInspector plugins have been disabled") + warning("The plugins depend on on private headers from QtDeclarative module.") + warning("To enable them, pass 'QT_PRIVATE_HEADERS=$QTDIR/include' to qmake, where $QTDIR is the source directory of qt.") + warning() } }