diff --git a/src/plugins/qmlprojectmanager/qmlprojectexporter/cmakegenerator.cpp b/src/plugins/qmlprojectmanager/qmlprojectexporter/cmakegenerator.cpp
index 31d1d75d834..e3a015c2c75 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectexporter/cmakegenerator.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectexporter/cmakegenerator.cpp
@@ -601,6 +601,15 @@ void CMakeGenerator::createWriter()
const Utils::FilePath rootPath = project->projectDirectory();
const Utils::FilePath settingsFile = rootPath.pathAppended("CMakeLists.txt.shared");
+
+ if (!settingsFile.exists()) {
+ const QString sharedTemplate = CMakeWriter::readTemplate(":/templates/cmake_shared");
+ const QString sharedContent = sharedTemplate.arg(writer->identifier());
+ CMakeWriter::writeFile(settingsFile, sharedContent);
+ m_writer = writer;
+ return;
+ }
+
Utils::PersistentSettingsReader reader;
reader.load(settingsFile);
auto store = reader.restoreValues();
diff --git a/src/plugins/qmlprojectmanager/qmlprojectexporter/cmakewriterlib.cpp b/src/plugins/qmlprojectmanager/qmlprojectexporter/cmakewriterlib.cpp
index 7a2985a7b96..59bff54fb25 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectexporter/cmakewriterlib.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectexporter/cmakewriterlib.cpp
@@ -47,12 +47,6 @@ void CMakeWriterLib::writeRootCMakeFile(const NodePtr &node) const
createDependencies(node->dir);
- const Utils::FilePath sharedFile = node->dir.pathAppended("CMakeLists.txt.shared");
- if (!sharedFile.exists()) {
- const QString sharedTemplate = readTemplate(":/templates/cmake_shared");
- writeFile(sharedFile, sharedTemplate);
- }
-
const Utils::FilePath file = node->dir.pathAppended("CMakeLists.txt");
if (!file.exists()) {
QString fileSection = "";
diff --git a/src/plugins/qmlprojectmanager/qmlprojectexporter/cmakewriterv1.cpp b/src/plugins/qmlprojectmanager/qmlprojectexporter/cmakewriterv1.cpp
index 1cfbdb8add8..601a6d1abe0 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectexporter/cmakewriterv1.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectexporter/cmakewriterv1.cpp
@@ -74,12 +74,6 @@ void CMakeWriterV1::writeRootCMakeFile(const NodePtr &node) const
createDependencies(node->dir);
- const Utils::FilePath sharedFile = node->dir.pathAppended("CMakeLists.txt.shared");
- if (!sharedFile.exists()) {
- const QString sharedTemplate = readTemplate(":/templates/cmake_shared");
- writeFile(sharedFile, sharedTemplate);
- }
-
const Utils::FilePath file = node->dir.pathAppended("CMakeLists.txt");
if (!file.exists()) {
const QString appName = parent()->projectName() + "App";
diff --git a/src/plugins/qmlprojectmanager/qmlprojectexporter/templates/cmakelists_txt_shared.tpl b/src/plugins/qmlprojectmanager/qmlprojectexporter/templates/cmakelists_txt_shared.tpl
index 3db7152bffa..593d7f0e9d6 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectexporter/templates/cmakelists_txt_shared.tpl
+++ b/src/plugins/qmlprojectmanager/qmlprojectexporter/templates/cmakelists_txt_shared.tpl
@@ -13,4 +13,8 @@
Version
22
+
+ CMake Generator
+ %1
+