forked from qt-creator/qt-creator
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:
@@ -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 ¶meters,
|
||||
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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user