CMakeProjectManager: Write cmake configuration into qtcsettings.cmake

The parameters sent to CMake are also saved as qtcsettings.cmake,
this allows Android Multi-ABI CMake projects apply the settings
for all ABIs.

This was part of 196b0da08a

Task-number: QTCREATORBUG-25183
Change-Id: I6d4f210247d5377cab855a1a051cf7aa815192c7
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
This commit is contained in:
Cristian Adam
2021-03-01 18:48:24 +01:00
parent 720dbf557f
commit 3c3e9a97fd
2 changed files with 26 additions and 1 deletions

View File

@@ -56,6 +56,7 @@
#include <utils/checkablemessagebox.h>
#include <utils/fileutils.h>
#include <utils/macroexpander.h>
#include <utils/mimetypes/mimetype.h>
#include <utils/qtcassert.h>
@@ -372,6 +373,27 @@ QString CMakeBuildSystem::reparseParametersString(int reparseFlags)
return result.trimmed();
}
void CMakeBuildSystem::writeConfigurationIntoBuildDirectory()
{
const Utils::MacroExpander *expander = cmakeBuildConfiguration()->macroExpander();
const FilePath buildDir = workDirectory(m_parameters);
QTC_ASSERT(buildDir.exists(), return );
const FilePath settingsFile = buildDir.pathAppended("qtcsettings.cmake");
QByteArray contents;
contents.append("# This file is managed by Qt Creator, do not edit!\n\n");
contents.append(
transform(cmakeBuildConfiguration()->configurationChanges(),
[expander](const CMakeConfigItem &item) { return item.toCMakeSetLine(expander); })
.join('\n')
.toUtf8());
QFile file(settingsFile.toString());
QTC_ASSERT(file.open(QFile::WriteOnly | QFile::Truncate), return );
file.write(contents);
}
void CMakeBuildSystem::setParametersAndRequestParse(const BuildDirParameters &parameters,
const int reparseParameters)
{
@@ -405,6 +427,8 @@ void CMakeBuildSystem::setParametersAndRequestParse(const BuildDirParameters &pa
m_reader.setParameters(m_parameters);
writeConfigurationIntoBuildDirectory();
if (reparseParameters & REPARSE_URGENT) {
qCDebug(cmakeBuildSystemLog) << "calling requestReparse";
requestParse();

View File

@@ -29,7 +29,6 @@
#include "cmakebuildtarget.h"
#include "cmakeprojectnodes.h"
#include "fileapireader.h"
#include "utils/macroexpander.h"
#include <projectexplorer/buildsystem.h>
@@ -155,6 +154,8 @@ private:
void runCTest();
void writeConfigurationIntoBuildDirectory();
ProjectExplorer::TreeScanner m_treeScanner;
QHash<QString, bool> m_mimeBinaryCache;
QList<const ProjectExplorer::FileNode *> m_allFiles;