forked from qt-creator/qt-creator
CMakePM: Save cmake parameters in qtcsettings.cmake also for initial run
This way projects can have access to all CMake parameters that were issued from Qt Creator. Previously the initial run was skipped, only the subsequent changes were picked up. Change-Id: I7a2262cdb9754ff666f78fd2e39663466f494f5f Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -380,27 +380,6 @@ 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)
|
||||
{
|
||||
@@ -434,8 +413,6 @@ void CMakeBuildSystem::setParametersAndRequestParse(const BuildDirParameters &pa
|
||||
|
||||
m_reader.setParameters(m_parameters);
|
||||
|
||||
writeConfigurationIntoBuildDirectory();
|
||||
|
||||
if (reparseParameters & REPARSE_URGENT) {
|
||||
qCDebug(cmakeBuildSystemLog) << "calling requestReparse";
|
||||
requestParse();
|
||||
|
@@ -158,8 +158,6 @@ private:
|
||||
|
||||
void runCTest();
|
||||
|
||||
void writeConfigurationIntoBuildDirectory();
|
||||
|
||||
ProjectExplorer::TreeScanner m_treeScanner;
|
||||
QHash<QString, bool> m_mimeBinaryCache;
|
||||
QList<const ProjectExplorer::FileNode *> m_allFiles;
|
||||
|
@@ -200,7 +200,7 @@ QString CMakeConfigItem::expandedValue(const ProjectExplorer::Kit *k) const
|
||||
|
||||
QString CMakeConfigItem::expandedValue(const Utils::MacroExpander *expander) const
|
||||
{
|
||||
return expander->expand(QString::fromUtf8(value));
|
||||
return expander ? expander->expand(QString::fromUtf8(value)) : QString::fromUtf8(value);
|
||||
}
|
||||
|
||||
std::function<bool (const CMakeConfigItem &a, const CMakeConfigItem &b)> CMakeConfigItem::sortOperator()
|
||||
|
@@ -336,6 +336,28 @@ void FileApiReader::makeBackupConfiguration(bool store)
|
||||
|
||||
}
|
||||
|
||||
void FileApiReader::writeConfigurationIntoBuildDirectory(const QStringList &configurationArguments)
|
||||
{
|
||||
const FilePath buildDir = m_parameters.workDirectory;
|
||||
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(CMakeConfigItem::itemsFromArguments(configurationArguments),
|
||||
[](const CMakeConfigItem &item) {
|
||||
return item.toCMakeSetLine(nullptr);
|
||||
})
|
||||
.join('\n')
|
||||
.toUtf8());
|
||||
|
||||
QFile file(settingsFile.toString());
|
||||
QTC_ASSERT(file.open(QFile::WriteOnly | QFile::Truncate), return );
|
||||
file.write(contents);
|
||||
}
|
||||
|
||||
void FileApiReader::startCMakeState(const QStringList &configurationArguments)
|
||||
{
|
||||
qCDebug(cmakeFileApiMode) << "FileApiReader: START CMAKE STATE.";
|
||||
@@ -347,6 +369,7 @@ void FileApiReader::startCMakeState(const QStringList &configurationArguments)
|
||||
|
||||
qCDebug(cmakeFileApiMode) << ">>>>>> Running cmake with arguments:" << configurationArguments;
|
||||
makeBackupConfiguration(true);
|
||||
writeConfigurationIntoBuildDirectory(configurationArguments);
|
||||
m_cmakeProcess->run(m_parameters, configurationArguments);
|
||||
}
|
||||
|
||||
|
@@ -93,6 +93,8 @@ private:
|
||||
void replyDirectoryHasChanged(const QString &directory) const;
|
||||
void makeBackupConfiguration(bool store);
|
||||
|
||||
void writeConfigurationIntoBuildDirectory(const QStringList &configuration);
|
||||
|
||||
std::unique_ptr<CMakeProcess> m_cmakeProcess;
|
||||
|
||||
// cmake data:
|
||||
|
Reference in New Issue
Block a user