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
{
return ToolChain::includedFiles("-include", flags, directoryPath);
return ToolChain::includedFiles("-include", flags, directoryPath, PossiblyConcatenatedFlag::No);
}
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,
const QString &directoryPath) const
{
return ToolChain::includedFiles("/FI", flags, directoryPath);
return ToolChain::includedFiles("/FI", flags, directoryPath, PossiblyConcatenatedFlag::Yes);
}
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,
const QStringList &flags,
const QString &directoryPath)
const QString &directoryPath,
PossiblyConcatenatedFlag possiblyConcatenated)
{
QStringList result;
for (int i = 0; i < flags.size(); ++i) {
if (flags[i] == option && i + 1 < flags.size()) {
QString includeFile = flags[++i];
QString includeFile;
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())
includeFile = directoryPath + "/" + includeFile;
result.append(QDir::cleanPath(includeFile));

View File

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