被迫在cmake中使用QT5_WRAP_CPP宏而不是automoc属性

时间:2018-02-28 10:43:50

标签: cmake qt5 qobject

根据cmake documentation,我应该只能使用一个属性而不必包含我的头文件,其中包含一个Q_OBJECT宏,如下面的cmake片段所示。如果我使用包装宏代码编译并运行但是如果我只使用enabled属性,则会出现编译错误

  

../ gui / libgui.so:未定义引用`vtable for ImageWidget'

为什么会这样?

cmake_minimum_required (VERSION 3.5.1 FATAL_ERROR)
project (app)

#QT5_WRAP_CPP(MOC_files
#       ../gui/include/gui/imageWidget.hpp
#)

add_executable(${PROJECT_NAME}
    main.cpp
    #  ${MOC_files}
)

target_include_directories(${PROJECT_NAME}
    PUBLIC ${PROJECT_BINARY_DIR}
)

set_target_properties(${PROJECT_NAME} PROPERTIES AUTOMOC TRUE)

target_link_libraries(${PROJECT_NAME}
     PRIVATE
    Qt5::Widgets
    Qt5::Core
    Qt5::Xml
    Qt5::OpenGL
    Qt5::Gui
)

set_target_properties(${PROJECT_NAME} PROPERTIES 
    INSTALL_RPATH "$ORIGIN:${CMAKE_INSTALL_PREFIX}/lib:$ORIGIN/")

install(TARGETS ${PROJECT_NAME}
        DESTINATION bin)

0 个答案:

没有答案