Commit 844244cc authored by tsdgeos's avatar tsdgeos
Browse files

automoc: avoid compiler warnings in linker-warning-silencing code

Revise the code added by !7296 (merged).
Make cmake_automoc_silence_linker_warning less warning-y.
Fix weak-tables clang warning and copyable-polymorph clazy warning.

Fixes: #23823
parent 425f6a0e
Pipeline #293408 canceled with stages
in 42 minutes and 15 seconds
......@@ -2167,22 +2167,23 @@ void cmQtAutoMocUicT::JobCompileUicT::Process()
void cmQtAutoMocUicT::JobMocsCompilationT::Process()
{
std::string const& compAbs = this->MocConst().CompFileAbs;
// Compose mocs compilation file content
std::string content =
"// This file is autogenerated. Changes will be overwritten.\n";
if (this->MocEval().CompFiles.empty()) {
// Placeholder content
cmCryptoHash hash(cmCryptoHash::AlgoSHA256);
const std::string hashedPath = hash.HashString(compAbs);
const std::string functionName =
"cmake_automoc_silence_linker_warning" + hashedPath;
content += "// No files found that require moc or the moc files are "
"included\n"
"struct cmake_automoc_silence_linker_warning{\n"
" virtual ~cmake_automoc_silence_linker_warning();\n"
"};\n"
"\n"
"inline "
"cmake_automoc_silence_linker_warning::"
"~cmake_automoc_silence_linker_warning()\n"
"{}\n";
"void " +
functionName + "() {}\n";
} else {
// Valid content
const bool mc = this->BaseConst().MultiConfig;
......@@ -2191,7 +2192,6 @@ void cmQtAutoMocUicT::JobMocsCompilationT::Process()
content += cmWrap(wrapFront, this->MocEval().CompFiles, wrapBack, "");
}
std::string const& compAbs = this->MocConst().CompFileAbs;
if (cmQtAutoGenerator::FileDiffers(compAbs, content)) {
// Actually write mocs compilation file
if (this->Log().Verbose()) {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment