cmakeautomoc on不生成moc文件
问题描述:使用cmake构建项目时,设置了AUTOMOC,但是运行后却没有生成moc文件。
解决方法:可以尝试以下几种方法:
1. 确认是否有使用Q_OBJECT宏声明的类。只有使用了Q_OBJECT宏声明的类,才会自动生成moc文件。
2. 检查文件中是否添加了AUTOMOC选项。AUTOMOC选项需要添加到add_library或add_executable命令中,才能自动为项目生成moc文件。
3. 检查cmake版本是否支持AUTOMOC。AUTOMOC是从CMake 2.6.0版本开始支持的,如果cmake版本过低,可能会导致AUTOMOC无法正常工作。
4. 尝试手动添加moc文件的生成规则。在中添加以下内容:
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
qt5_wrap_cpp(MOC_SOURCES ${HEADERS})
add_library(${PROJECT_NAME} ${SRC_SOURCES} ${MOC_SOURCES})
其中${HEADERS}表示需要生成moc文件的头文件,${SRC_SOURCES}表示项目源文件。
5. 检查生成的moc文件路径是否正确。在中添加以下内容:
set(CMAKE_INCLUDE_CURRENT_DIR ON)cmake如何使用
set(CMAKE_AUTOMOC_RELAXED_MODE ON)
set(CMAKE_AUTOMOC_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/moc)
message('MOC GENERATED: ${CMAKE_CURRENT_BINARY_DIR}/moc')
以上方法中,第1、2、3种方法适用于大多数情况,第4、5种方法则是一些特殊情况下的解决方法。如果以上方法都无法解决问题,可以考虑重新编译项目或者升级cmake版本。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论