forked from qt-creator/qt-creator
CMake: Write creators settings into build directory
Write a file qtcsettings.cmake into the build directory. This file contains all applicable CMake configuration settings that creator wants to set. Use "cmake -C qtcsettings.cmake .." to reconfigure on the command line to make use of this file. Change-Id: I4a69d082c50bb66e60b4eec1b3155df53e00734d Reviewed-by: Cristian Adam <cristian.adam@qt.io> Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
@@ -231,6 +231,28 @@ bool BuildDirManager::hasConfigChanged()
|
||||
return mustReparse || kcit != targetConfig.constEnd();
|
||||
}
|
||||
|
||||
void BuildDirManager::writeConfigurationIntoBuildDirectory(const Utils::MacroExpander *expander)
|
||||
{
|
||||
QTC_ASSERT(expander, return );
|
||||
|
||||
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(m_parameters.configuration,
|
||||
[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);
|
||||
}
|
||||
|
||||
bool BuildDirManager::isParsing() const
|
||||
{
|
||||
return m_reader && m_reader->isParsing();
|
||||
@@ -358,6 +380,8 @@ void BuildDirManager::parse()
|
||||
}
|
||||
}
|
||||
|
||||
writeConfigurationIntoBuildDirectory(m_parameters.expander);
|
||||
|
||||
qCDebug(cmakeBuildDirManagerLog) << "Asking reader to parse";
|
||||
m_reader->parse(reparseParameters & REPARSE_FORCE_CMAKE_RUN,
|
||||
reparseParameters & REPARSE_FORCE_CONFIGURATION);
|
||||
|
||||
Reference in New Issue
Block a user