Submitted upstream: https://github.com/AntiMicro/antimicro/pull/207 From e5d2c880ac336bc9ff558c43fe5ed7d47df28bbe Mon Sep 17 00:00:00 2001 From: Raphael Kubo da Costa Date: Mon, 29 Jan 2018 12:19:55 +0100 Subject: [PATCH] cmake: Stop calling QT5_WRAP_CPP(). The USE_QT5 code path already unconditionally sets CMAKE_AUTOMOC to on. Calling QT5_WRAP_CPP() used to be just redundant, as antimicro_HEADERS_MOC was never actually added as a source dependency of the antiword target. In other words, CMake's own automoc infrastructure was actually being used and the moc invocations from QT5_WRAP_CPP() were not being made at all. Starting with Qt 5.9.4, calling QT5_WRAP_CPP() disables the AUTOMOC property on the macro's input files, which means neither CMake's automoc infrastructure not QT5_WRAP_CPP()'s code were being used and we ended up with several 'undefined reference to vtable' errors when linking. --- CMakeLists.txt.orig 2016-11-06 01:23:03 UTC +++ CMakeLists.txt @@ -499,7 +499,6 @@ if (UNIX) find_package(Qt5Network REQUIRED) find_package(Qt5LinguistTools REQUIRED) - QT5_WRAP_CPP(antimicro_HEADERS_MOC ${antimicro_HEADERS}) QT5_WRAP_UI(antimicro_FORMS_HEADERS ${antimicro_FORMS}) QT5_ADD_RESOURCES(antimicro_RESOURCES_RCC ${antimicro_RESOURCES}) add_subdirectory("share/antimicro/translations") @@ -550,7 +549,6 @@ elseif(WIN32) find_package(Qt5Network REQUIRED) find_package(Qt5LinguistTools REQUIRED) - QT5_WRAP_CPP(antimicro_HEADERS_MOC ${antimicro_HEADERS}) QT5_WRAP_UI(antimicro_FORMS_HEADERS ${antimicro_FORMS}) QT5_ADD_RESOURCES(antimicro_RESOURCES_RCC ${antimicro_RESOURCES}) add_subdirectory("share/antimicro/translations")