Toolchain: Support also concatenated syntax for MSVC included file

For example: /FIC:/Projects/test/config.h

Change-Id: I18dcda6593effa58ece019ce40bca7860cebfc8c
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Orgad Shaneh
2022-10-11 09:24:46 +03:00
committed by Orgad Shaneh
parent c1667f9bea
commit b81e295f58
4 changed files with 18 additions and 6 deletions

View File

@@ -566,7 +566,7 @@ WarningFlags GccToolChain::warningFlags(const QStringList &cflags) const
QStringList GccToolChain::includedFiles(const QStringList &flags, const QString &directoryPath) const QStringList GccToolChain::includedFiles(const QStringList &flags, const QString &directoryPath) const
{ {
return ToolChain::includedFiles("-include", flags, directoryPath); return ToolChain::includedFiles("-include", flags, directoryPath, PossiblyConcatenatedFlag::No);
} }
QStringList GccToolChain::gccPrepareArguments(const QStringList &flags, QStringList GccToolChain::gccPrepareArguments(const QStringList &flags,

View File

@@ -1113,7 +1113,7 @@ WarningFlags MsvcToolChain::warningFlags(const QStringList &cflags) const
QStringList MsvcToolChain::includedFiles(const QStringList &flags, QStringList MsvcToolChain::includedFiles(const QStringList &flags,
const QString &directoryPath) const const QString &directoryPath) const
{ {
return ToolChain::includedFiles("/FI", flags, directoryPath); return ToolChain::includedFiles("/FI", flags, directoryPath, PossiblyConcatenatedFlag::Yes);
} }
ToolChain::BuiltInHeaderPathsRunner MsvcToolChain::createBuiltInHeaderPathsRunner( ToolChain::BuiltInHeaderPathsRunner MsvcToolChain::createBuiltInHeaderPathsRunner(

View File

@@ -468,13 +468,23 @@ Utils::LanguageVersion ToolChain::languageVersion(const Utils::Id &language, con
QStringList ToolChain::includedFiles(const QString &option, QStringList ToolChain::includedFiles(const QString &option,
const QStringList &flags, const QStringList &flags,
const QString &directoryPath) const QString &directoryPath,
PossiblyConcatenatedFlag possiblyConcatenated)
{ {
QStringList result; QStringList result;
for (int i = 0; i < flags.size(); ++i) { for (int i = 0; i < flags.size(); ++i) {
if (flags[i] == option && i + 1 < flags.size()) { QString includeFile;
QString includeFile = flags[++i]; const QString flag = flags[i];
if (possiblyConcatenated == PossiblyConcatenatedFlag::Yes
&& flag.startsWith(option)
&& flag.size() > option.size()) {
includeFile = flag.mid(option.size());
}
if (includeFile.isEmpty() && flag == option && i + 1 < flags.size())
includeFile = flags[++i];
if (!includeFile.isEmpty()) {
if (!QFileInfo(includeFile).isAbsolute()) if (!QFileInfo(includeFile).isAbsolute())
includeFile = directoryPath + "/" + includeFile; includeFile = directoryPath + "/" + includeFile;
result.append(QDir::cleanPath(includeFile)); result.append(QDir::cleanPath(includeFile));

View File

@@ -185,9 +185,11 @@ protected:
// Make sure to call this function when deriving! // Make sure to call this function when deriving!
virtual bool fromMap(const QVariantMap &data); virtual bool fromMap(const QVariantMap &data);
enum class PossiblyConcatenatedFlag { No, Yes };
static QStringList includedFiles(const QString &option, static QStringList includedFiles(const QString &option,
const QStringList &flags, const QStringList &flags,
const QString &directoryPath); const QString &directoryPath,
PossiblyConcatenatedFlag possiblyConcatenated);
private: private:
ToolChain(const ToolChain &) = delete; ToolChain(const ToolChain &) = delete;