diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index c6736d4a9a9..7dd6dc2f973 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -1985,6 +1985,8 @@ CMakeBuildConfigurationFactory::BuildType CMakeBuildConfigurationFactory::buildT return BuildTypeRelWithDebInfo; if (bt == "minsizerel") return BuildTypeMinSizeRel; + if (bt == "profile") + return BuildTypeProfile; return BuildTypeNone; } diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp index bbea21567ee..60c11157239 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp @@ -467,9 +467,6 @@ QList 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 CMakeProjectImporter::examineDirectory(const FilePath &importPath, // ToolChains: data->toolChains = extractToolChainsFromCache(config); - result.push_back(static_cast(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; } diff --git a/tests/manual/cmakepresets/CMakePresets.json b/tests/manual/cmakepresets/CMakePresets.json index 976f44832ac..e4fd4feeae9 100644 --- a/tests/manual/cmakepresets/CMakePresets.json +++ b/tests/manual/cmakepresets/CMakePresets.json @@ -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",