automoc: silence linker warning on macos

when an empty `mocs_compilation.cpp` is included in a static library,
the macos linker emits a warning:
```
/Applications/Xcode13.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib:
file: path/To/Library.a(mocs_compilation.cpp.o) has no symbols
```

we therefore generate a globally visible weak symbol in the form of a
virtual function table
This commit is contained in:
Tim Blechmann
2022-05-25 10:36:18 +08:00
parent 0b30568219
commit 4a9daae483

View File

@@ -2175,7 +2175,14 @@ void cmQtAutoMocUicT::JobMocsCompilationT::Process()
// Placeholder content
content += "// No files found that require moc or the moc files are "
"included\n"
"enum some_compilers { need_more_than_nothing };\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";
} else {
// Valid content
const bool mc = this->BaseConst().MultiConfig;