CMake Automoc错误1 - 无法编译项目。

3
我刚把我用Qt5构建的项目移入了我的CMake项目树中。我将该项目导出到了CMake目录中。然而,当我尝试构建该项目时,编译器会给出以下错误:[src/GUIconceptStudy/CMakeFiles/GUIconceptStudy_automoc] Error 1。请参见附带的以下截图:Automoc Error 1。此外,CMakeLists.txt文件如下:
cmake_minimum_required (VERSION 3.1)
project(GUIconceptStudy)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

find_package( OpenCV REQUIRED )
find_package( Boost COMPONENTS system thread filesystem REQUIRED)

#find_package (sqlite3)
find_package(Qt5 REQUIRED COMPONENTS Core Quick)

###
### make sure we use c++11
###
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

###
###boost include stuff (required for all libcam)
###
INCLUDE_DIRECTORIES( ${Boost_INCLUDE_DIR} )

find_package(Qt5Widgets)
find_package(Qt5PrintSupport)
#find all the qt UI stuff
file(GLOB UI
    "ui/*.ui"
)

#make them into headers
qt5_wrap_ui (UI_HDRS  ${UI})

###
### add all your non QT sources
###

# find all non ui sources
file(GLOB SRCS
    "src/*.h"
    "src/*.cpp"
    "src/*.hpp"
)

# find all ui related sources
file(GLOB UI_SRCS
    "ui/*.h"
    "ui/*.cpp"
    "ui/*.hpp"
)

###
### Add executables
###
add_executable(GUIconceptStudy main/main.cpp ui/qrc/res.qrc ${SRCS} ${UI_HDRS} ${UI_SRCS})
target_link_libraries (GUIconceptStudy  Qt5::Widgets  ${Boost_LIBRARIES} ${OpenCV_LIBS} Qt5::PrintSupport Qt5::Core Qt5::Quick)

###
### Add Library
###
add_library(GUIconceptStudy_lib SHARED ui/qrc/res.qrc ${SRCS} ${UI_HDRS} ${UI_SRCS})
target_link_libraries (GUIconceptStudy_lib Qt5::Widgets  ${Boost_LIBRARIES} ${OpenCV_LIBS} Qt5::PrintSupport Qt5::Core Qt5::Quick)

在查看了不同的在线资源后,我没有找到特别有用的内容。是否有人可以稍微解释一下问题可能是什么?

1个回答

2
这很可能是由于缺少 set(CMAKE_INCLUDE_CURRENT_DIR ON) 导致的。如文档中所述,应该设置它,因为生成的文件不在源目录中:

生成的 moc_*.cpp 和 *.moc 文件被放置在构建目录中,因此方便设置 CMAKE_INCLUDE_CURRENT_DIR 变量。

我看到其他人犯的另一个错误是混合使用 Qt 处理流程。我已经在我的其他答案中提到过了。正如 AUTOUIC 属性 的文档所说,启用此属性时不应使用 qt5_wrap_ui 函数。

是的,这可能是一次碰运气的尝试,但它实际上解决了我的问题,Teivaz!感谢您的评论,也感谢您分享其他帖子中发布的文档。:) :) - user9174145

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接