summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Blechmann <tim@klingt.org>2022-05-25 02:36:18 (GMT)
committerTim Blechmann <tim@klingt.org>2022-06-01 04:12:08 (GMT)
commit4a9daae4832de862ee0f82e13784a93dcf5fafbe (patch)
tree3c79bab444bd69a1e534a5d68bdfff0142a933af
parent0b3056821929646a0b9394c95dbdcc1482a18e89 (diff)
downloadCMake-4a9daae4832de862ee0f82e13784a93dcf5fafbe.zip
CMake-4a9daae4832de862ee0f82e13784a93dcf5fafbe.tar.gz
CMake-4a9daae4832de862ee0f82e13784a93dcf5fafbe.tar.bz2
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
-rw-r--r--Source/cmQtAutoMocUic.cxx9
1 files changed, 8 insertions, 1 deletions
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;