合肥网站设计建,自己如何建设网站步骤,做网站需要写代码吗,小程序网站开发太原博主将.h文件和.cpp文件放到了不同的文件目录下面#xff0c;如下图所示#xff1a; 于是构建项目的时候就报错了#undefined reference to vtable for MainView#xff0c;这个是由于src/view目录下的CMake无法自动moc头文件导致的#xff0c;需要手动moc include/view目录… 博主将.h文件和.cpp文件放到了不同的文件目录下面如下图所示 于是构建项目的时候就报错了#undefined reference to vtable for MainView这个是由于src/view目录下的CMake无法自动moc头文件导致的需要手动moc include/view目录下的头文件这样才能识别QOBJECT宏。 在src/view的CMake中加入这三句话就行了。
set(MOC_SOURCES ${CMAKE_SOURCE_DIR}/include/view/mainview.h) # 指定需要 moc 处理的头文件 qt_wrap_cpp(MOC_SOURCES ${MOC_SOURCES}) list(APPEND HEADER_FILES ${MOC_SOURCES})
#这个地方需要注意由于.cpp和.h文件不在同一目录所以需要手动通过moc对.h文件的QOBJECT宏进行编译否则回报虚函表错误
#undefined reference to vtable for MainView
aux_source_directory(. SOURCES_FILES)
set(MOC_SOURCES ${CMAKE_SOURCE_DIR}/include/view/mainview.h) # 指定需要 moc 处理的头文件
qt_wrap_cpp(MOC_SOURCES ${MOC_SOURCES})
list(APPEND HEADER_FILES ${MOC_SOURCES})
add_library(viewlib SHARED ${SOURCES_FILES} ${HEADER_FILES})
target_link_libraries(viewlib PUBLIC Qt6::Widgets)