diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2020-06-05 18:59:01 +0300 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2020-07-06 13:41:37 +0000 |
commit | 4c20a35cd93315dfefc06d87dbd74e9c0c0c5eff (patch) | |
tree | d28b08592be42e863d03ca1b0f68644eaf34c3d9 /qmake/generators/win32/mingw_make.cpp | |
parent | 1f0299b029eadc988872dc6b0bc27e78a625c871 (diff) |
MinGW: Use a response file for long include paths
Change-Id: I55ce73ad08473bca27c7ab5730f633fb77c9b8cd
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
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; } |