summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@qt.io>2021-05-28 12:02:18 +0200
committerCristian Adam <cristian.adam@qt.io>2021-06-01 09:22:41 +0000
commit392bda1160d3578861b74d87167e70f10287b323 (patch)
tree23a942ec1763d455aa3be35a54e8f7544e156f45
parentfbeaa774b5528764669f8cf2068b65149fc4adcd (diff)
downloadqt-creator-392bda1160d3578861b74d87167e70f10287b323.tar.gz
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>
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp23
-rw-r--r--src/plugins/cmakeprojectmanager/cmakebuildsystem.h2
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp2
-rw-r--r--src/plugins/cmakeprojectmanager/fileapireader.cpp23
-rw-r--r--src/plugins/cmakeprojectmanager/fileapireader.h2
5 files changed, 26 insertions, 26 deletions
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
index 0fe4bfe3b3..560b9251ae 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp
@@ -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 &parameters,
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();
diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h
index 3b591c1581..07cffaa4f9 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.h
+++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.h
@@ -158,8 +158,6 @@ private:
void runCTest();
- void writeConfigurationIntoBuildDirectory();
-
ProjectExplorer::TreeScanner m_treeScanner;
QHash<QString, bool> m_mimeBinaryCache;
QList<const ProjectExplorer::FileNode *> m_allFiles;
diff --git a/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp b/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp
index 4887bd130d..7e30f661fb 100644
--- a/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp
@@ -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()
diff --git a/src/plugins/cmakeprojectmanager/fileapireader.cpp b/src/plugins/cmakeprojectmanager/fileapireader.cpp
index 2b3a086b1e..303503eccc 100644
--- a/src/plugins/cmakeprojectmanager/fileapireader.cpp
+++ b/src/plugins/cmakeprojectmanager/fileapireader.cpp
@@ -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);
}
diff --git a/src/plugins/cmakeprojectmanager/fileapireader.h b/src/plugins/cmakeprojectmanager/fileapireader.h
index 505f5fd506..1a7d7dc3d3 100644
--- a/src/plugins/cmakeprojectmanager/fileapireader.h
+++ b/src/plugins/cmakeprojectmanager/fileapireader.h
@@ -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: