CMakePM: Allow default build configurations for presets

Restrict the build types only if CMAKE_BUILD_TYPE or
CMAKE_CONFIGURATION_TYPES cache variables are set.

Change-Id: Ib88dcd5d4a0fca86f86e95815edff1116f896324
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Cristian Adam
2022-10-10 19:33:48 +02:00
parent f84bdee045
commit c1667f9bea
3 changed files with 30 additions and 6 deletions

View File

@@ -467,9 +467,6 @@ QList<void *> CMakeProjectImporter::examineDirectory(const FilePath &importPath,
const CMakeConfig cache = configurePreset.cacheVariables
? configurePreset.cacheVariables.value()
: CMakeConfig();
data->cmakeBuildType = cache.valueOf("CMAKE_BUILD_TYPE");
if (data->cmakeBuildType.isEmpty())
data->cmakeBuildType = "Debug";
data->sysroot = cache.filePathValueOf("CMAKE_SYSROOT");
@@ -497,7 +494,29 @@ QList<void *> CMakeProjectImporter::examineDirectory(const FilePath &importPath,
// ToolChains:
data->toolChains = extractToolChainsFromCache(config);
result.push_back(static_cast<void *>(data.release()));
QByteArrayList buildConfigurationTypes = {cache.valueOf("CMAKE_BUILD_TYPE")};
if (buildConfigurationTypes.front().isEmpty()) {
buildConfigurationTypes.clear();
QByteArray buildConfigurationTypesString = cache.valueOf("CMAKE_CONFIGURATION_TYPES");
if (!buildConfigurationTypesString.isEmpty()) {
buildConfigurationTypes = buildConfigurationTypesString.split(';');
} else {
for (int type = CMakeBuildConfigurationFactory::BuildTypeDebug;
type != CMakeBuildConfigurationFactory::BuildTypeLast;
++type) {
BuildInfo info = CMakeBuildConfigurationFactory::createBuildInfo(
CMakeBuildConfigurationFactory::BuildType(type));
buildConfigurationTypes << info.typeName.toUtf8();
}
}
}
for (const auto &buildType : buildConfigurationTypes) {
DirectoryData *newData = new DirectoryData(*data);
newData->cmakeBuildType = buildType;
result.emplace_back(newData);
}
return result;
}