CMake

2016-03-21 26 views
0
kullanarak Qt moc hatası

Qt ile GUI oluşturan ve CMake kullanarak makefiles oluşturma bir OpenCV uygulama yazmaya çalışıyorum.CMake

This file was generated using the moc from 5.2.1. It cannot be used with the include files from this version of Qt. (The moc has changed too much.)

Tamam: Ben sorun ben make komutu çalıştırmak çalıştığınızda hata alıyorum olmasıdır. Bu yüzden moc'u qt4 yerine qt4'ten kullanmaya çalışmalıyım (hem qt4 hem de qt5 yüklü). Tabii ki,ve /usr/bin/moc'a sahip olduğumdan, tek yapmam gereken şey invoke sudo update-alternatives --config moc, ama tek alacağım update-alternatives: error: no alternatives for moc.

cmake_minimum_required(VERSION 2.8.9) 
project (Vigil) 

include_directories(
    build 
    src 
    inc 
    uis 
) 

######################### Configure OpenCV inclusion ######################### 

FIND_PATH(CV_INCLUDE_DIR cv.h 
    /usr/include/opencv 
) 

MESSAGE(STATUS "OpenCV: CV Path : " ${CV_INCLUDE_DIR}) 

FIND_PATH(CVAUX_INCLUDE_DIR cvaux.h 
    /usr/include/opencv 
    /usr/local/include/opencv 
    /usr/local/include/opencv/cvaux/include 
    /usr/local/include/opencv/include 
) 

MESSAGE(STATUS "OpenCV: CVAux Path : " ${CXCORE_INCLUDE_DIR}) 

FIND_PATH(CXCORE_INCLUDE_DIR cxcore.h 
    /usr/include/opencv 
    /usr/local/include/opencv 
    /usr/local/include/opencv/cxcore/include 
) 

MESSAGE(STATUS "OpenCV: CXCore Path : " ${CVAUX_INCLUDE_DIR}) 

FIND_PATH(HIGHGUI_INCLUDE_DIR highgui.h 
    /usr/include/opencv 
    /usr/local/include/opencv/otherlibs/highgui 
    /opt/local/include/opencv 
    /usr/local/include/opencv 
) 

MESSAGE(STATUS "OpenCV: HighGUI Path : " ${HIGHGUI_INCLUDE_DIR}) 

FIND_LIBRARY(CV_LIB NAMES opencv_imgproc PATHS 
    /usr/lib 
    /usr/local/lib 
    /usr/lib64 
    /usr/local/lib64 
) 

MESSAGE(STATUS "OpenCV: CV Lib: " ${CV_LIB})  

FIND_LIBRARY(CXCORE_LIB NAMES opencv_core PATHS 
    /usr/lib 
    /usr/local/lib 
    /usr/lib64 
) 

MESSAGE(STATUS "OpenCV: CXCore Lib: " ${CXCORE_LIB}) 

FIND_LIBRARY(HIGHGUI_LIB NAMES opencv_highgui PATHS 
    /usr/lib 
    /usr/local/lib 
    /usr/lib64 
    /usr/local/lib64 
) 

MESSAGE(STATUS "OpenCV: HighGUI Lib: " ${HIGHGUI_LIB})  

INCLUDE_DIRECTORIES(
    ${HIGHGUI_INCLUDE_DIR} 
    ${OPENCV_INCLUDE_DIR} 
    ${CXCORE_INCLUDE_DIR} 
    ${CVAUX_INCLUDE_DIR} 
) 

######################### Configure QT inclusion ######################### 
FIND_PACKAGE(Qt5Widgets) 
FIND_PACKAGE(Qt4 REQUIRED) 
include_directories(${QT_INCLUDES}) 
IF(QT4_FOUND) 
    MESSAGE(STATUS "QT found : YES") 
ELSE(QT4_FOUND) 
    MESSAGE(FATAL_ERROR 
    "Cannot build without Qt4. Please set Qt4_DIR.") 
ENDIF(QT4_FOUND) 

######################### Add sources, headers and uis ######################### 

set(SOURCES ${SOURCES} 
    main.cpp 
    VigilWidget.cpp 
) 

SET(HEADERS ${HEADERS} 
    VigilWidget.h 
) 

SET(UI_FILES 
    bugView.ui 
) 

######################### Run UIC on .ui files ######################### 

QT4_WRAP_UI(UI_HDRS ${UI_FILES}) 
MESSAGE(STATUS "UI_HEADERS: " ${UI_HDRS}) 
# and finally this will run moc: 
#QT4_AUTOMOC(${HEADERS}) 
QT4_WRAP_CPP(MOC_HEADERS ${HEADERS}) 

######################### ######################### 

ADD_EXECUTABLE(Vigil ${UI_HDRS} ${SOURCES} ${HEADERS} ${QtApp_RCC_SRCS} ${MOC_HEADERS}) 

Kaynağım ve başlık dosyaları şunlardır: Hmmm ...

nedenle, sorunun ya qt ya benim CMakeLists.txt sürümüyle olduğunu düşünüyorum, işte bunun için kullanılan koddur Şu an çok boş ama onları da göndereceğim. Kim bilir, belki de hata var.

main.cpp:

#include <iostream> 
#include "VigilWidget.h" 
//#include <QApplication> 

int main(int argc, char *argv[]) { 
    QApplication app(argc, argv); 
    std::cout << "Testing"; 
    VigilWidget vigil; 
    vigil.show(); 
} 

VigilWidget.cpp:

#include "VigilWidget.h" 

VigilWidget::VigilWidget(QWidget *parent) 
    : QWidget(parent) 
{ 
    ui.setupUi(this); 
} 

VigilWidget.h: Neyse

#ifndef _BGSUBTRACT_H_ 
#define _BGSUBTRACT_H_ 

#include "ui_bugView.h" 
//#include <QObject> 

class VigilWidget : public QWidget{ 
Q_OBJECT 

public: 

private slots: 

signals: 

private slots: 

private: 

Ui::bugView ui; 

}; 
#endif 

, iki gün bu almanın en iyi parçası geçirdim uzak ve gerçekten bazı yardım gerçekten takdir ediyorum! Çok teşekkürler! Qt5 için

+0

'FIND_PACKAGE (Qt5Widgets) Qt4 veya Qt5 kullanıyor musunuz? – Ilya

+0

Evet ... bu gereksiz. Ancak, bu satırı kaldırdıktan sonra hala aynı sorunu yaşıyorum. –

+0

Peki hepsini qt5 paketlemek için değiştirdim - bu doğru olmalı? ** Bulunan paket yapılandırma dosyası:: /usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake ama YANLIŞ böylece pakete Qt5_FOUND set "Qt5" Şimdi bana hata mesajı verir FOUND olarak kabul edilir. Paket tarafından verilen neden: Qt5 paketi en az bir bileşen gerektirir ** –

cevap

1

Yapılandırma:

set(QT_VERSION_REQ "5.2") 
find_package(Qt5Core ${QT_VERSION_REQ} REQUIRED) 
find_package(Qt5Quick ${QT_VERSION_REQ} REQUIRED) 
find_package(Qt5Widgets ${QT_VERSION_REQ} REQUIRED) 
set(CMAKE_AUTOMOC ON) 

add_executable(${PROJECT_NAME} ${SOURCES}) 
target_link_libraries(${PROJECT_NAME} 
    Qt5::Core 
    Qt5::Quick 
    Qt5::Widgets  
) 

Ve iyi kullanılması QtQuick yerine QWidgets mümkünse.

+0

Herkese teşekkürler! Sorun çözüldü :) –