CMakePM: Better error message when CMake file-api config is missing

Now the available configuration list is displayed, alongside with
the hint that CMAKE_BUILD_TYPE or CMAKE_CONFIGURATION_TYPES needs
to match / contain the "Build type" field.

In order to test this just clear (or set a random value) in the
"Build type" field and click "Re-configure with initial parameters"
button.

Fixes: QTCREATORBUG-25506
Change-Id: I44558c45c7050d03e72a3a0b9ce2c8d89bd6e4bc
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Cristian Adam
2021-03-23 12:28:09 +01:00
parent 9b99e93a96
commit c9053256d3
2 changed files with 16 additions and 1 deletions

View File

@@ -896,7 +896,21 @@ FileApiData FileApiParser::parseData(const QFileInfo &replyFileInfo, const QStri
return QString::compare(cfg.name, cmakeBuildType, Qt::CaseInsensitive) == 0;
});
if (it == codeModels.cend()) {
errorMessage = QString("No '%1' CMake configuration found!").arg(cmakeBuildType);
QStringList buildTypes;
for (const Configuration &cfg: codeModels)
buildTypes << cfg.name;
if (result.replyFile.isMultiConfig) {
errorMessage = tr("No \"%1\" CMake configuration found. Available configurations: \"%2\".\n"
"Make sure that CMAKE_CONFIGURATION_TYPES variable contains the \"Build type\" field.")
.arg(cmakeBuildType)
.arg(buildTypes.join(", "));
} else {
errorMessage = tr("No \"%1\" CMake configuration found. Available configuration: \"%2\".\n"
"Make sure that CMAKE_BUILD_TYPE variable matches the \"Build type\" field.")
.arg(cmakeBuildType)
.arg(buildTypes.join(", "));
}
qWarning() << errorMessage;
return result;
}

View File

@@ -245,6 +245,7 @@ public:
class FileApiParser
{
Q_DECLARE_TR_FUNCTIONS(FileApiParser)
public:
static FileApiData parseData(const QFileInfo &replyFileInfo, const QString& cmakeBuildType,
QString &errorMessage);