2015-10-05 3 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

EDIT: решение .. установлен CMake 3.2.2 и добавил

set(CMAKE_AUTOUIC ON) 

Это решает проблему. 2.8.12 - действительно проводная версия

+0

Is ui_mainwindow.h и mainwindow.h. Это автоматическая хитрость или ошибка? – usr1234567

+0

это правильно, так оно и должно работать ... – gatherer

+0

руководство, которое я использовал ... ничего не понимаю http://doc.qt.io/qt-5/cmake-manual.html .. так его гораздо больше wired – gatherer

ответ

0

С моей точки зрения, генерация ui_ * заголовков из файлов .ui не имеет ничего общего с moc. Documentation for CMAKE_AUTOMOC говорит, что это делает CMake run moc инструментом для файлов, содержащих аннотации Q_OBJECT или moc_ *.

Что вам нужно, я думаю, это qt5_wrap_ui() macro.

+1

Он недоступен в CMake 2.8.12, но более поздние версии также имеют переменную CMAKE_AUTOUIC, которая автоматизирует обработку файлов .ui. Если использование более позднего CMake возможно, использование этого свойства variable/target будет более чистым. Подробности [здесь] (https://cmake.org/cmake/help/v3.3/prop_tgt/AUTOUIC.html) –

Смежные вопросы