[CMake] how to get cmake and custom qt widget to work?

eial at cs.bgu.ac.il eial at cs.bgu.ac.il
Tue Oct 5 15:15:36 EDT 2010


probably, here is the gui libs CMakeList.txt:

#get all cpp files in libs
FILE(GLOB GUI_CPP *.cpp)
FILE(GLOB GUI_HPP *.hpp)
FILE(GLOB GUI_UI *.ui)

SET(QT_USE_QTGUI TRUE)

#splice out all non UI headers, still in testing, currently disabled.
SET (SPLICED_GUI_HPP "")
foreach (SITEM ${GUI_HPP})
  set (FILECONTENT "")
  FILE (READ ${SITEM} FILECONTENT)
  set (VAL "")
  STRING(REGEX MATCH "Q_OBJECT" VAL ${FILECONTENT})
  if (VAL)
    LIST (APPEND SPLICED_GUI_HPP ${SITEM})
  endif (VAL)
endforeach(SITEM ${GUI_HPP})

QT4_WRAP_UI(GUI_UI_H ${GUI_UI})
QT4_WRAP_CPP(GUI_MOC_SRCS ${SPLICED_GUI_HPP})

#build a shared library
ADD_LIBRARY(GUI SHARED ${GUI_CPP} ${GUI_MOC_SRCS} ${GUI_UI_H})

#link libs
TARGET_LINK_LIBRARIES(GUI ${QT_QTCORE_LIBRARIES} ${QT_QTGUI_LIBRARIES} Utilities DataObjects)

and project's CMakeList.txt:

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
PROJECT(ossm)

SET(CMAKE_VERBOSE_MAKEFILE ON)
SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/build)
SET(LIBRARY_OUTPUT_PATH ${CMAKE_SOURCE_DIR}/build/libs)
SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/modules)
SET(Boost_MINIMUM_VERSION "1.37")

include(CheckCXXCompilerFlag)

CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_NEW_ISO_STD)
IF(COMPILER_SUPPORTS_NEW_ISO_STD)
  SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
  MESSAGE(STATUS "  Found c++0x support")
ELSE(COMPILER_SUPPORTS_NEW_ISO_STD)
  MESSAGE(SEND_ERROR "  no c++0x support found, this program must be compiled with c++0x support.")
ENDIF(COMPILER_SUPPORTS_NEW_ISO_STD)

FIND_PACKAGE(Boost 1.37.0 COMPONENTS thread-mt unit_test_framework-mt iostreams-mt filesystem-mt REQUIRED)
FIND_PACKAGE(Qt4 COMPONENTS QtCore QtGui QtXml REQUIRED)
FIND_PACKAGE(LibLZMA REQUIRED)

INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR} ${QT_INCLUDE_DIR} ${LIBLZMA_INCLUDE_DIRS} ${CMAKE_CURRENT_BINARY_DIR}/src src)

SUBDIRS(src)


On Tue 05 Oct 21:02 2010 John Drescher wrote:
> On Tue, Oct 5, 2010 at 2:59 PM, eial at cs.bgu.ac.il <eial at cs.bgu.ac.il> wrote:
> >
> > hello.
> > I have a cmake+qt4 project, I needed to extend a certain gui item to suit my needs, I've been able to insert it into qtcreator and incorporate it into the project's gui, now when I run compilation, I get this:
> > /home/dagg/workspace/OSSM/src/GUI/ui_TrainingActivityManager.h:29:28: error: qstringspinbox.h: No such file or directory
> >
> > the relevant part of /home/dagg/workspace/OSSM/src/GUI/ui_TrainingActivityManager.h is this:
> > /********************************************************************************
> > ** Form generated from reading UI file 'TrainingActivityManager.ui'
> > **
> > ** Created: Tue Oct 5 20:29:00 2010
> > **      by: Qt User Interface Compiler version 4.6.3
> > **
> > ** WARNING! All changes made in this file will be lost when recompiling UI file!
> > ********************************************************************************/
> >
> > #ifndef UI_TRAININGACTIVITYMANAGER_H
> > #define UI_TRAININGACTIVITYMANAGER_H
> >
> > #include <QtCore/QLocale>
> > #include <QtCore/QVariant>
> > #include <QtGui/QAction>
> > #include <QtGui/QApplication>
> > #include <QtGui/QButtonGroup>
> > #include <QtGui/QDialog>
> > #include <QtGui/QDialogButtonBox>
> > #include <QtGui/QFormLayout>
> > #include <QtGui/QGridLayout>
> > #include <QtGui/QHeaderView>
> > #include <QtGui/QLabel>
> > #include <QtGui/QLineEdit>
> > #include <QtGui/QPushButton>
> > #include <QtGui/QTreeWidget>
> > #include <QtGui/QVBoxLayout>
> > #include <QtGui/QWidget>
> > #include <qstringspinbox.h>  // line 28
> >
> > QT_BEGIN_NAMESPACE
> >
> > class Ui_TrainingActivityManager
> > {
> > public:
> >    QTreeWidget *mTrainActManList;
> >    QWidget *layoutWidget;
> >
> > how can I make cmake work with this plugin, I've putted the hpp and cpp of the plugin within one of my sub project's src folder, also the file is called qstringspinbox.hpp.
> >
> > any help would be appreciated.
> >
> The problem is most likely with your CMakeLists.txt
> 
> John
> 






More information about the CMake mailing list