summaryrefslogtreecommitdiffstats
path: root/qmake/generators/win32/mingw_make.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'qmake/generators/win32/mingw_make.cpp')
-rw-r--r--qmake/generators/win32/mingw_make.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/qmake/generators/win32/mingw_make.cpp b/qmake/generators/win32/mingw_make.cpp
index eb100764ae..823b799eb2 100644
--- a/qmake/generators/win32/mingw_make.cpp
+++ b/qmake/generators/win32/mingw_make.cpp
@@ -201,11 +201,26 @@ void MingwMakefileGenerator::writeIncPart(QTextStream &t)
t << "INCPATH = ";
const ProStringList &incs = project->values("INCLUDEPATH");
- for (ProStringList::ConstIterator incit = incs.begin(); incit != incs.end(); ++incit) {
- QString inc = (*incit).toQString();
+ QFile responseFile;
+ QTextStream responseStream;
+ QChar sep(' ');
+ int totalLength = std::accumulate(incs.constBegin(), incs.constEnd(), 0,
+ [](int total, const ProString &inc) {
+ return total + inc.size() + 2;
+ });
+ if (totalLength > project->intValue("QMAKE_RESPONSEFILE_THRESHOLD", 8000)) {
+ const QString fileName = createResponseFile("incpath", incs, "-I");
+ if (!fileName.isEmpty()) {
+ t << '@' + fileName;
+ t << Qt::endl;
+ return;
+ }
+ }
+ for (const ProString &incit: qAsConst(incs)) {
+ QString inc = incit.toQString();
inc.replace(QRegularExpression("\\\\$"), "");
-
- t << "-I" << escapeFilePath(inc) << ' ';
+ inc.replace('\\', '/');
+ t << "-I" << escapeFilePath(inc) << sep;
}
t << Qt::endl;
}