diff options
Diffstat (limited to 'qmake/generators/win32/mingw_make.cpp')
-rw-r--r-- | qmake/generators/win32/mingw_make.cpp | 23 |
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; } |