用cmake(不是qmake)编译QT5,出现如下错误:undefined reference to `vtable for GraphicsView'

1:首先检查CMakeLists.txt中是否开启了QT的预处理:

set(CMAKE_AUTOMOC ON)

set(CMAKE_AUTORCC ON)

set(CMAKE_AUTOUIC ON)

set(QT_USE_QTMAIN TRUE)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(CMAKE_POSITION_INDEPENDENT_CODE ON)



2: 如果上面的都添加了,则很有可能是没有把头文件也添加到源文件:

出错情况:

set(SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/mainwindow.cpp 

${CMAKE_CURRENT_SOURCE_DIR}/src/GraphicsView.cpp 

${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp )


添加头文件后,错误被修正:

set(SRC_FILES ${CMAKE_CURRENT_SOURCE_DIR}/include/GraphicsView.h 

${CMAKE_CURRENT_SOURCE_DIR}/include/mainwindow.h 

${CMAKE_CURRENT_SOURCE_DIR}/src/mainwindow.cpp 

${CMAKE_CURRENT_SOURCE_DIR}/src/GraphicsView.

cpp ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp )


因为这些头文件中包含了Q_OBJECT、Q_SLOTS等 QT关键字,因此也需要添加到add_executable中。

add_executable(lidar_calibration_viewer ${SRC_FILES})

标签: none

添加新评论