qt5 cmake无自动MOC

qt5 cmake无自动MOC,cmake,qt5,Cmake,Qt5,我不明白 我在qt5 cmake指南之后做了一个小例子。 这是一个最小的例子 cmake_minimum_required(VERSION 2.8.11) project(basic_qt_gui) set(CMAKE_PREFIX_PATH "/opt/qt5_5_0/5.5/gcc_64") # Find includes in corresponding build directories set(CMAKE_INCLUDE_CURRENT_DIR ON) # Instruct C

我不明白 我在qt5 cmake指南之后做了一个小例子。 这是一个最小的例子

cmake_minimum_required(VERSION 2.8.11)

project(basic_qt_gui)

set(CMAKE_PREFIX_PATH "/opt/qt5_5_0/5.5/gcc_64")

# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# Instruct CMake to run moc automatically when needed.
set(CMAKE_AUTOMOC ON)

# Find the QtWidgets library
find_package(Qt5Widgets)
find_package(Qt5Core)
find_package(Qt5Gui)

set(BASIC_QT_GUI_HEADERS mainwindow.h)
set(BASIC_QT_GUI_SOURCES main.cpp
                         mainwindow.cpp)

# Tell CMake to create the helloworld executable
add_executable(basic_qt_gui ${BASIC_QT_GUI_HEADERS} ${BASIC_QT_GUI_SOURCES})

# Use the Widgets module from Qt 5.
target_link_libraries(basic_qt_gui Qt5::Widgets)
在make之后,我总是会遇到这个错误

[ 25%] Automoc for target basic_qt_gui
Generating moc_mainwindow.cpp
[ 25%] Built target basic_qt_gui_automoc
Scanning dependencies of target basic_qt_gui
[ 50%] Building CXX object CMakeFiles/basic_qt_gui.dir/main.cpp.o
[ 75%] Building CXX object CMakeFiles/basic_qt_gui.dir/mainwindow.cpp.o
/home/gatherer/Dokumente/gitHubProjekte/basic_qt_gui/mainwindow.cpp:2:27:  fatal error: ui_mainwindow.h: No such file or directory
#include "ui_mainwindow.h"
                       ^
compilation terminated.
make[2]: *** [CMakeFiles/basic_qt_gui.dir/mainwindow.cpp.o] Error 1
make[1]: *** [CMakeFiles/basic_qt_gui.dir/all] Error 2
make: *** [all] Error 2
我四处看了很多,但没有发现错误。 我使用CMake 2.8.12和qt5.5.0

编辑:解决方案。。已安装cmake 3.2.2并添加

  set(CMAKE_AUTOUIC ON)

这就解决了问题。2.8.12是一个真正的有线版本

据我所知,从.ui文件生成ui_*header与moc无关。表示它使CMake运行moc工具,用于包含Q_对象注释或moc_*包含的文件


我想您需要的是
qt5\u wrap\u ui()
宏。

是ui\u mainwindow.h和mainwindow.h。这是automoc的骗局还是一个错误?它是正确的,这是它应该工作的方式…我使用的指南。。。没什么难懂的。。因此,CMake 2.8.12中没有更多的wiredIt,但更高版本还具有CMake_AUTOUIC变量,该变量可自动处理.ui文件。如果可以使用更晚的CMake,那么使用此变量/目标属性将是一种更干净的方法。细节