From 4a9daae4832de862ee0f82e13784a93dcf5fafbe Mon Sep 17 00:00:00 2001 From: Tim Blechmann Date: Wed, 25 May 2022 10:36:18 +0800 Subject: 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 --- Source/cmQtAutoMocUic.cxx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Source/cmQtAutoMocUic.cxx b/Source/cmQtAutoMocUic.cxx index 0d38dfb..6e8ada1 100644 --- a/Source/cmQtAutoMocUic.cxx +++ b/Source/cmQtAutoMocUic.cxx @@ -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; -- cgit v0.12