diff options
author | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2015-02-24 17:19:40 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@theqtcompany.com> | 2015-02-24 21:02:08 +0100 |
commit | 34b14a8472f44f8517577756e033b92ebd4c5912 (patch) | |
tree | 66a0575156d0a17a835430137e218e2b3f04cc65 /qmake | |
parent | d34353a065c443aac20376cbd88323480d769183 (diff) | |
parent | edd555425a08f9e074f0a4d9333862636ccaae8d (diff) |
Merge remote-tracking branch 'origin/5.4' into 5.5
Conflicts:
examples/xml/htmlinfo/simpleexample.html
examples/xml/rsslisting/rsslisting.cpp
qmake/generators/win32/msbuild_objectmodel.cpp
src/3rdparty/harfbuzz-ng/src/hb-private.hh
src/corelib/global/qlogging.cpp
src/corelib/io/qstorageinfo_unix.cpp
src/corelib/thread/qwaitcondition_unix.cpp
src/gui/kernel/qguiapplication.cpp
src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
src/testlib/doc/src/qt-webpages.qdoc
tests/auto/other/qaccessibility/tst_qaccessibility.cpp
Change-Id: Ib272ff0bc30a1a5d51275eb3cd2f201dc82c11ff
Diffstat (limited to 'qmake')
-rw-r--r-- | qmake/doc/snippets/qmake/comments.pro | 2 | ||||
-rw-r--r-- | qmake/doc/src/qmake-manual.qdoc | 7 | ||||
-rw-r--r-- | qmake/generators/win32/msbuild_objectmodel.cpp | 53 | ||||
-rw-r--r-- | qmake/generators/win32/msbuild_objectmodel.h | 13 | ||||
-rw-r--r-- | qmake/library/qmakeevaluator.cpp | 4 |
5 files changed, 46 insertions, 33 deletions
diff --git a/qmake/doc/snippets/qmake/comments.pro b/qmake/doc/snippets/qmake/comments.pro index 957052c81d..9fa85aa6f3 100644 --- a/qmake/doc/snippets/qmake/comments.pro +++ b/qmake/doc/snippets/qmake/comments.pro @@ -5,6 +5,6 @@ #! [1] # To include a literal hash character, use the $$LITERAL_HASH variable: -urlPieces = http://qt-project.org/doc/qt-5.0/qtgui/qtextdocument.html pageCount +urlPieces = http://doc.qt.io/qt-5/qtextdocument.html pageCount message($$join(urlPieces, $$LITERAL_HASH)) #! [1] diff --git a/qmake/doc/src/qmake-manual.qdoc b/qmake/doc/src/qmake-manual.qdoc index cf7f143450..610bf0cca5 100644 --- a/qmake/doc/src/qmake-manual.qdoc +++ b/qmake/doc/src/qmake-manual.qdoc @@ -769,12 +769,7 @@ \section2 Creating Visual Studio Project Files - Developers using Visual Studio to write Qt applications can use the - Visual Studio integration facilities provided with the - \l{Qt Commercial License} - and do not need to worry about how project dependencies are managed. - - However, some developers may need to import an existing + This section describes how to import an existing qmake project into Visual Studio. qmake is able to take a project file and create a Visual Studio project that contains all the necessary information diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp index 3bb70c5c19..3d1b05c9b3 100644 --- a/qmake/generators/win32/msbuild_objectmodel.cpp +++ b/qmake/generators/win32/msbuild_objectmodel.cpp @@ -343,8 +343,8 @@ static QStringList unquote(const QStringList &values) // Tree file generation --------------------------------------------- void XTreeNode::generateXML(XmlOutput &xml, XmlOutput &xmlFilter, const QString &tagName, - VCProject &tool, const QString &filter, const QString &filterId) { - + VCProject &tool, const QString &filter) +{ if (children.size()) { // Filter QString tempFilterName; @@ -364,24 +364,24 @@ void XTreeNode::generateXML(XmlOutput &xml, XmlOutput &xmlFilter, const QString if ((*it)->children.size()) { if ( !tempFilterName.isEmpty() ) - (*it)->generateXML(xml, xmlFilter, it.key(), tool, tempFilterName, filterId); + (*it)->generateXML(xml, xmlFilter, it.key(), tool, tempFilterName); else - (*it)->generateXML(xml, xmlFilter, it.key(), tool, filter, filterId); + (*it)->generateXML(xml, xmlFilter, it.key(), tool, filter); } // Second round, do leafs for (it = children.constBegin(); it != end; ++it) if (!(*it)->children.size()) { if ( !tempFilterName.isEmpty() ) - (*it)->generateXML(xml, xmlFilter, it.key(), tool, tempFilterName, filterId); + (*it)->generateXML(xml, xmlFilter, it.key(), tool, tempFilterName); else - (*it)->generateXML(xml, xmlFilter, it.key(), tool, filter, filterId); + (*it)->generateXML(xml, xmlFilter, it.key(), tool, filter); } } else { // Leaf xml << tag(_ItemGroup); xmlFilter << tag(_ItemGroup); - VCXProjectWriter::outputFileConfigs(tool, xml, xmlFilter, info, filter, filterId); + VCXProjectWriter::outputFileConfigs(tool, xml, xmlFilter, info, filter); xmlFilter << closetag(); xml << closetag(); } @@ -389,14 +389,15 @@ void XTreeNode::generateXML(XmlOutput &xml, XmlOutput &xmlFilter, const QString // Flat file generation --------------------------------------------- void XFlatNode::generateXML(XmlOutput &xml, XmlOutput &xmlFilter, const QString &/*tagName*/, - VCProject &tool, const QString &filter, const QString &filterId) { + VCProject &tool, const QString &filter) +{ if (children.size()) { ChildrenMapFlat::ConstIterator it = children.constBegin(); ChildrenMapFlat::ConstIterator end = children.constEnd(); xml << tag(_ItemGroup); xmlFilter << tag(_ItemGroup); for (; it != end; ++it) { - VCXProjectWriter::outputFileConfigs(tool, xml, xmlFilter, (*it), filter, filterId); + VCXProjectWriter::outputFileConfigs(tool, xml, xmlFilter, (*it), filter); } xml << closetag(); xmlFilter << closetag(); @@ -1826,21 +1827,29 @@ void VCXProjectWriter::outputFilter(VCProject &project, XmlOutput &xml, XmlOutpu if (!root->hasElements()) return; - root->generateXML(xml, xmlFilter, "", project, filtername, filtername); // output root tree + root->generateXML(xml, xmlFilter, "", project, filtername); // output root tree +} + +static QString stringBeforeFirstBackslash(const QString &str) +{ + int idx = str.indexOf(QLatin1Char('\\')); + return idx == -1 ? str : str.left(idx); } // Output all configurations (by filtername) for a file (by info) // A filters config output is in VCFilter.outputFileConfig() void VCXProjectWriter::outputFileConfigs(VCProject &project, XmlOutput &xml, XmlOutput &xmlFilter, - const VCFilterFile &info, const QString &filtername, - const QString &filterId) + const VCFilterFile &info, const QString &filtername) { + // In non-flat mode the filter names have directory suffixes, e.g. "Generated Files\subdir". + const QString cleanFilterName = stringBeforeFirstBackslash(filtername); + // We need to check if the file has any custom build step. // If there is one then it has to be included with "CustomBuild Include" bool hasCustomBuildStep = false; QVarLengthArray<OutputFilterData> data(project.SingleProjects.count()); for (int i = 0; i < project.SingleProjects.count(); ++i) { - data[i].filter = project.SingleProjects.at(i).filterByName(filterId); + data[i].filter = project.SingleProjects.at(i).filterByName(cleanFilterName); if (!data[i].filter.Config) // only if the filter is not empty continue; VCFilter &filter = data[i].filter; @@ -1854,6 +1863,7 @@ void VCXProjectWriter::outputFileConfigs(VCProject &project, XmlOutput &xml, Xml filter.CompilerTool.config = filter.Config; VCFilterFile fileInFilter = filter.findFile(info.file, &data[i].inBuild); + data[i].info = fileInFilter; data[i].inBuild &= !fileInFilter.excludeFromBuild; if (data[i].inBuild && filter.addExtraCompiler(fileInFilter)) hasCustomBuildStep = true; @@ -1861,12 +1871,13 @@ void VCXProjectWriter::outputFileConfigs(VCProject &project, XmlOutput &xml, Xml bool fileAdded = false; for (int i = 0; i < project.SingleProjects.count(); ++i) { - const VCFilter &filter = project.SingleProjects.at(i).filterByName(filterId); - if (!filter.Config) // only if the filter is not empty + OutputFilterData *d = &data[i]; + if (!d->filter.Config) // only if the filter is not empty continue; - if (outputFileConfig(&data[i], xml, xmlFilter, info.file, fileAdded, - hasCustomBuildStep)) + if (outputFileConfig(d, xml, xmlFilter, info.file, filtername, fileAdded, + hasCustomBuildStep)) { fileAdded = true; + } } if ( !fileAdded ) @@ -1877,8 +1888,8 @@ void VCXProjectWriter::outputFileConfigs(VCProject &project, XmlOutput &xml, Xml } bool VCXProjectWriter::outputFileConfig(OutputFilterData *d, XmlOutput &xml, XmlOutput &xmlFilter, - const QString &filename, bool fileAdded, - bool hasCustomBuildStep) + const QString &filename, const QString &fullFilterName, + bool fileAdded, bool hasCustomBuildStep) { VCFilter &filter = d->filter; if (d->inBuild) { @@ -1901,7 +1912,7 @@ bool VCXProjectWriter::outputFileConfig(OutputFilterData *d, XmlOutput &xml, Xml xmlFilter << tag("CustomBuild") << attrTag("Include", Option::fixPathToTargetOS(filename)) - << attrTagS("Filter", filter.Name); + << attrTagS("Filter", fullFilterName); xml << tag("CustomBuild") << attrTag("Include", Option::fixPathToTargetOS(filename)); @@ -1919,7 +1930,7 @@ bool VCXProjectWriter::outputFileConfig(OutputFilterData *d, XmlOutput &xml, Xml if (!fileAdded) { fileAdded = true; - outputFileConfig(xml, xmlFilter, filename, filter.Name); + outputFileConfig(xml, xmlFilter, filename, fullFilterName); } const QString condition = generateCondition(*filter.Config); diff --git a/qmake/generators/win32/msbuild_objectmodel.h b/qmake/generators/win32/msbuild_objectmodel.h index 12614de481..1b7ce2d716 100644 --- a/qmake/generators/win32/msbuild_objectmodel.h +++ b/qmake/generators/win32/msbuild_objectmodel.h @@ -57,7 +57,7 @@ public: virtual void addElement(const QString &filepath, const VCFilterFile &allInfo) = 0; virtual void removeElements()= 0; virtual void generateXML(XmlOutput &xml, XmlOutput &xmlFilter, const QString &tagName, - VCProject &tool, const QString &filter, const QString &filterId) = 0; + VCProject &tool, const QString &filter) = 0; virtual bool hasElements() = 0; }; @@ -108,7 +108,7 @@ public: } void generateXML(XmlOutput &xml, XmlOutput &xmlFilter, const QString &tagName, VCProject &tool, - const QString &filter, const QString &filterId); + const QString &filter); bool hasElements() { return children.size() != 0; } @@ -149,7 +149,7 @@ public: } void generateXML(XmlOutput &xml, XmlOutput &xmlFilter, const QString &tagName, VCProject &proj, - const QString &filter, const QString &filterId); + const QString &filter); bool hasElements() { return children.size() != 0; } @@ -183,8 +183,11 @@ private: static void addFilters(VCProject &project, XmlOutput &xmlFilter, const QString &filterName); static void outputFilter(VCProject &project, XmlOutput &xml, XmlOutput &xmlFilter, const QString &filtername); - static void outputFileConfigs(VCProject &project, XmlOutput &xml, XmlOutput &xmlFilter, const VCFilterFile &info, const QString &filtername, const QString &filterId); - static bool outputFileConfig(OutputFilterData *d, XmlOutput &xml, XmlOutput &xmlFilter, const QString &filename, bool fileAdded, bool hasCustomBuildStep); + static void outputFileConfigs(VCProject &project, XmlOutput &xml, XmlOutput &xmlFilter, + const VCFilterFile &info, const QString &filtername); + static bool outputFileConfig(OutputFilterData *d, XmlOutput &xml, XmlOutput &xmlFilter, + const QString &filename, const QString &fullFilterName, + bool fileAdded, bool hasCustomBuildStep); static void outputFileConfig(XmlOutput &xml, XmlOutput &xmlFilter, const QString &fileName, const QString &filterName); static QString generateCondition(const VCConfiguration &config); diff --git a/qmake/library/qmakeevaluator.cpp b/qmake/library/qmakeevaluator.cpp index 9e964f9bf1..5c9dc45f3a 100644 --- a/qmake/library/qmakeevaluator.cpp +++ b/qmake/library/qmakeevaluator.cpp @@ -970,7 +970,11 @@ static ProString msvcBinDirToQMakeArch(QString subdir) static ProString defaultMsvcArchitecture() { +#if defined(Q_OS_WIN64) + return ProString("x86_64"); +#else return ProString("x86"); +#endif } static ProString msvcArchitecture(const QString &vcInstallDir, const QString &pathVar) |