2015-10-05 126 views
0

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

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) 

化妆后,我总是得到这个错误

[ 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是一个真正有线的版本

+0

是ui_mainwindow.h和mainwindow.h。这是汽车欺骗还是错误? – usr1234567

+0

它是正确的,它应该工作的方式... – gatherer

+0

我使用的指南...没有什么难以理解的http://doc.qt.io/qt-5/cmake-manual.html ..所以它更多有线 – gatherer

回答

0

根据我的理解,从.ui文件生成ui_ *头文件与moc无关。 Documentation for CMAKE_AUTOMOC表示它使CMake为包含Q_OBJECT注释或moc_ * includes的文件运行moc工具。

你需要什么,我猜是qt5_wrap_ui()宏。

+1

它在CMake 2.8.12中不可用,但后来的版本也有CMAKE_AUTOUIC变量,它可以自动处理.ui文件。如果使用后面的CMake是可能的,那么使用这个变量/目标属性将是一个更清洁的方法。详情[here](https://cmake.org/cmake/help/v3.3/prop_tgt/AUTOUIC.html) –