CMake: Fall back to reading CMakeCache.txt

Allows the user to select cache settings even if configuring failed.

Change-Id: I821c28f386e0c249b4c4d9c6561a377cb48b3f2d
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
Marcus Tillmanns
2023-12-14 15:15:58 +01:00
parent 16b40c5bb6
commit 690d6a6c8f
3 changed files with 9 additions and 1 deletions

View File

@@ -838,6 +838,7 @@ static QStringList uniqueTargetFiles(const Configuration &config)
FileApiData FileApiParser::parseData(QPromise<std::shared_ptr<FileApiQtcData>> &promise, FileApiData FileApiParser::parseData(QPromise<std::shared_ptr<FileApiQtcData>> &promise,
const FilePath &replyFilePath, const FilePath &replyFilePath,
const Utils::FilePath &buildDir,
const QString &cmakeBuildType, const QString &cmakeBuildType,
QString &errorMessage) QString &errorMessage)
{ {
@@ -857,7 +858,11 @@ FileApiData FileApiParser::parseData(QPromise<std::shared_ptr<FileApiQtcData>> &
result.replyFile = readReplyFile(replyFilePath, errorMessage); result.replyFile = readReplyFile(replyFilePath, errorMessage);
if (cancelCheck()) if (cancelCheck())
return {}; return {};
result.cache = readCacheFile(result.replyFile.jsonFile("cache", replyDir), errorMessage); const FilePath cachePathFromReply = result.replyFile.jsonFile("cache", replyDir);
if (cachePathFromReply.isEmpty())
result.cache = CMakeConfig::fromFile(buildDir / "CMakeCache.txt", &errorMessage);
else
result.cache = readCacheFile(cachePathFromReply, errorMessage);
if (cancelCheck()) if (cancelCheck())
return {}; return {};
result.cmakeFiles = readCMakeFilesFile(result.replyFile.jsonFile("cmakeFiles", replyDir), result.cmakeFiles = readCMakeFilesFile(result.replyFile.jsonFile("cmakeFiles", replyDir),

View File

@@ -223,6 +223,7 @@ class FileApiParser
public: public:
static FileApiData parseData(QPromise<std::shared_ptr<FileApiQtcData>> &promise, static FileApiData parseData(QPromise<std::shared_ptr<FileApiQtcData>> &promise,
const Utils::FilePath &replyFilePath, const Utils::FilePath &replyFilePath,
const Utils::FilePath &buildDir,
const QString &cmakeBuildType, const QString &cmakeBuildType,
QString &errorMessage); QString &errorMessage);

View File

@@ -263,6 +263,7 @@ void FileApiReader::endState(const FilePath &replyFilePath, bool restoredFromBac
auto result = std::make_shared<FileApiQtcData>(); auto result = std::make_shared<FileApiQtcData>();
FileApiData data = FileApiParser::parseData(promise, FileApiData data = FileApiParser::parseData(promise,
replyFilePath, replyFilePath,
buildDirectory,
cmakeBuildType, cmakeBuildType,
result->errorMessage); result->errorMessage);
if (result->errorMessage.isEmpty()) { if (result->errorMessage.isEmpty()) {
@@ -270,6 +271,7 @@ void FileApiReader::endState(const FilePath &replyFilePath, bool restoredFromBac
sourceDirectory, buildDirectory); sourceDirectory, buildDirectory);
} else { } else {
qWarning() << result->errorMessage; qWarning() << result->errorMessage;
result->cache = std::move(data.cache);
} }
promise.addResult(result); promise.addResult(result);