由于源文件、头文件以及ui文件均位于不同路径中,因此在编写CMakeLists.txt时只声明与设置源文件头文件路径,编译时就出现了标题错误,查阅资料发现说是使用了OBJECT宏而没有生成moc_文件供文件链接使用,因此在CMakeLists.txt中加入如下内容即可
set(moc_headers ${CMAKE_CURRENT_LIST_DIR}/include/xxx.h) # 一定要写清楚是哪个头文件使用了Q_OBJECT
这一行我写在了设置头文件路径的中间(个人认为随便写在add_executable之前就行)
set(header_s ${CMAKE_CURRENT_LIST_DIR}/include)
set(moc_headers ${CMAKE_CURRENT_LIST_DIR}/include/xxx.h)
include_directories(${header_s})
最后就是add_executable(${PROJECT_NAME} ${moc_headers})里面要写上以便编译时能够使用。