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

@@ -1985,6 +1985,8 @@ CMakeBuildConfigurationFactory::BuildType CMakeBuildConfigurationFactory::buildT
return BuildTypeRelWithDebInfo;
if (bt == "minsizerel")
return BuildTypeMinSizeRel;
if (bt == "profile")
return BuildTypeProfile;
return BuildTypeNone;
}

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;
}

View File

@@ -11,7 +11,6 @@
"displayName": "MinGW 11.2.0",
"generator": "Ninja",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_PREFIX_PATH": "c:/Qt/6.3.2/mingw_64"
},
"condition": {
@@ -31,7 +30,11 @@
"binaryDir": "${sourceDir}/build-${presetName}-release",
"displayName": "MinGW 11.2.0 Makefiles",
"generator": "MinGW Makefiles",
"inherits" : "mingw"
"inherits" : "mingw",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"CMAKE_PREFIX_PATH": "c:/Qt/6.3.2/mingw_64"
}
},
{
"name": "visualc",