Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Add QCamera to CMakeList (ROS integrated Qt Project)
Qt 6.11 is out! See what's new in the release blog

Add QCamera to CMakeList (ROS integrated Qt Project)

Scheduled Pinned Locked Moved Solved General and Desktop
19 Posts 5 Posters 3.3k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • jsulmJ jsulm

    @aliemrenebiler

    find_package(Qt5Multimedia REQUIRED)
    
    A Offline
    A Offline
    aliemrenebiler
    wrote on last edited by aliemrenebiler
    #6

    @jsulm I think that is the right way but didn't work yet.

    Here is what I wrote:

    find_package(Qt5Multimedia REQUIRED
      QCamera
      QCameraViewfinder
      QCameraInfo
      QCameraImageCapture
    )
    

    These are the subclasses that I use. Still has the same error about QCamera.

    VRoninV 1 Reply Last reply
    0
    • A Offline
      A Offline
      aliemrenebiler
      wrote on last edited by aliemrenebiler
      #7

      Also found this page.

      It says I should add:

      set(CMAKE_PREFIX_PATH "~/sw/Qt/Qt_5_4/5.4/gcc_64/") 
      

      to make CMakeList.txt see QtMultimedia. But the directory is not right for Ubuntu.

      Any ideas?

      1 Reply Last reply
      0
      • A aliemrenebiler

        @jsulm I think that is the right way but didn't work yet.

        Here is what I wrote:

        find_package(Qt5Multimedia REQUIRED
          QCamera
          QCameraViewfinder
          QCameraInfo
          QCameraImageCapture
        )
        

        These are the subclasses that I use. Still has the same error about QCamera.

        VRoninV Offline
        VRoninV Offline
        VRonin
        wrote on last edited by
        #8

        @aliemrenebiler said in Add QCamera to CMakeList (ROS integrated Qt Project):

        Here is what I wrote:

        No, it's much easier:
        change:

        # Find Qt5 libraries
        find_package(Qt5 REQUIRED COMPONENTS
          Core
          Qml
          Quick
          Widgets
        )
        

        qt5_use_modules(talker_wig Core Widgets)
        into

        # Find Qt5 libraries
        find_package(Qt5 REQUIRED COMPONENTS
          Core
          Qml
          Quick
          Widgets
          Multimedia
        )
        

        qt5_use_modules(talker_wig Core Widgets Multimedia)

        For people ending here from Google

        qt5_use_modules is obsolete, OP needs to support a very old version of CMake. The modern way is to simply use target_link_libraries(talker_wig Qt5::Core Qt5::Widgets Qt5::Multimedia)

        "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
        ~Napoleon Bonaparte

        On a crusade to banish setIndexWidget() from the holy land of Qt

        A 1 Reply Last reply
        2
        • VRoninV VRonin

          @aliemrenebiler said in Add QCamera to CMakeList (ROS integrated Qt Project):

          Here is what I wrote:

          No, it's much easier:
          change:

          # Find Qt5 libraries
          find_package(Qt5 REQUIRED COMPONENTS
            Core
            Qml
            Quick
            Widgets
          )
          

          qt5_use_modules(talker_wig Core Widgets)
          into

          # Find Qt5 libraries
          find_package(Qt5 REQUIRED COMPONENTS
            Core
            Qml
            Quick
            Widgets
            Multimedia
          )
          

          qt5_use_modules(talker_wig Core Widgets Multimedia)

          For people ending here from Google

          qt5_use_modules is obsolete, OP needs to support a very old version of CMake. The modern way is to simply use target_link_libraries(talker_wig Qt5::Core Qt5::Widgets Qt5::Multimedia)

          A Offline
          A Offline
          aliemrenebiler
          wrote on last edited by aliemrenebiler
          #9

          @VRonin said in Add QCamera to CMakeList (ROS integrated Qt Project):

          Multimedia

          THANK YOU SO MUCH! That solved the Camera class problem.

          Bu a similar error occured this time. qcamereviewfinder.h also should be added.

          How can i add it?

          Screenshot from 2021-06-24 12-44-06.png

          CMakeList.txt file:

          # Find Qt5 libraries
          find_package(Qt5 REQUIRED COMPONENTS
            Core
            Qml
            Quick
            Widgets
            Multimedia
          )
          find_package(Qt5Multimedia REQUIRED COMPONENTS
            QCamera
            QCameraViewfinder
            QCameraInfo
            QCameraImageCapture
          )
          
          1 Reply Last reply
          0
          • VRoninV Offline
            VRoninV Offline
            VRonin
            wrote on last edited by
            #10

            @aliemrenebiler said in Add QCamera to CMakeList (ROS integrated Qt Project):

            find_package(Qt5Multimedia REQUIRED COMPONENTS
            QCamera
            QCameraViewfinder
            QCameraInfo
            QCameraImageCapture
            )

            This is useless

            Did you add
            qt5_use_modules(talker_wig Core Widgets Multimedia) and qt5_use_modules(listener_wig Core Widgets Multimedia)

            "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
            ~Napoleon Bonaparte

            On a crusade to banish setIndexWidget() from the holy land of Qt

            A 1 Reply Last reply
            0
            • VRoninV VRonin

              @aliemrenebiler said in Add QCamera to CMakeList (ROS integrated Qt Project):

              find_package(Qt5Multimedia REQUIRED COMPONENTS
              QCamera
              QCameraViewfinder
              QCameraInfo
              QCameraImageCapture
              )

              This is useless

              Did you add
              qt5_use_modules(talker_wig Core Widgets Multimedia) and qt5_use_modules(listener_wig Core Widgets Multimedia)

              A Offline
              A Offline
              aliemrenebiler
              wrote on last edited by
              #11

              @VRonin Yeah it was, we deleted that part.

              And also yes, we added
              qt5_use_modules(talker_wig Core Widgets Multimedia) and qt5_use_modules(listener_wig Core Widgets Multimedia)

              1 Reply Last reply
              0
              • VRoninV Offline
                VRoninV Offline
                VRonin
                wrote on last edited by
                #12

                I suspect something might be going wrong in qt5_wrap_ui just to confirm this is the case, could you add #include <QCameraViewFinder> in one of your cpp files and see if that works?

                Do you really need to support CMake 2.8.3 or is it an example you downloaded and it's not a hard requirement?

                "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                ~Napoleon Bonaparte

                On a crusade to banish setIndexWidget() from the holy land of Qt

                A 1 Reply Last reply
                0
                • VRoninV VRonin

                  I suspect something might be going wrong in qt5_wrap_ui just to confirm this is the case, could you add #include <QCameraViewFinder> in one of your cpp files and see if that works?

                  Do you really need to support CMake 2.8.3 or is it an example you downloaded and it's not a hard requirement?

                  A Offline
                  A Offline
                  aliemrenebiler
                  wrote on last edited by
                  #13

                  @VRonin We already added QCameraViewFinder but it is #include <QCameraViewfinder> with "f".

                  CMake version is not important, it was in the example.

                  Full code where QCameraViewfinder exist:

                  #include "mainwindow.h"
                  #include "ui_mainwindow.h"
                  
                  #include <QCameraViewfinder>
                  #include <QCameraInfo>
                  #include <QtWidgets>
                  
                  Q_DECLARE_METATYPE(QCameraInfo)
                  
                  MainWindow::MainWindow(QWidget *parent) :
                      QMainWindow(parent),
                      ui(new Ui::MainWindow)
                  {
                      ui->setupUi(this);
                      connect(this, &MainWindow::newString, this, &MainWindow::newStringSlot);
                      connect(this, &MainWindow::newString2, this, &MainWindow::newString2Slot);
                  
                      //Camera devices:
                      QActionGroup *videoDevicesGroup = new QActionGroup(this);
                      videoDevicesGroup->setExclusive(true);
                      const QList<QCameraInfo> availableCameras = QCameraInfo::availableCameras();
                      for (const QCameraInfo &cameraInfo : availableCameras) {
                          QAction *videoDeviceAction = new QAction(cameraInfo.description(), videoDevicesGroup);
                          videoDeviceAction->setCheckable(true);
                          videoDeviceAction->setData(QVariant::fromValue(cameraInfo));
                          if (cameraInfo == QCameraInfo::defaultCamera())
                              videoDeviceAction->setChecked(true);
                      }
                      connect(videoDevicesGroup, &QActionGroup::triggered, this, &MainWindow::updateCameraDevice);
                      setCamera(QCameraInfo::defaultCamera());
                  }
                  
                  void MainWindow::newStringSlot(QString txt)
                  {
                      ui->list_lines->addItem(txt);
                  }
                  void MainWindow::newString2Slot(QString txt2)
                  {
                      ui->list_lines_2->addItem(txt2);
                  }
                  
                  void MainWindow::setCamera(const QCameraInfo &cameraInfo)
                  {
                      m_camera.reset(new QCamera(cameraInfo));
                  
                      connect(m_camera.data(), QOverload<QCamera::Error>::of(&QCamera::error), this, &MainWindow::displayCameraError);
                  
                      m_camera->setViewfinder(ui->viewfinder);
                  
                      updateLockStatus(m_camera->lockStatus(), QCamera::UserRequest);
                  
                      connect(m_camera.data(), QOverload<QCamera::LockStatus, QCamera::LockChangeReason>::of(&QCamera::lockStatusChanged),
                              this, &MainWindow::updateLockStatus);
                  
                      m_camera->start();
                  }
                  
                  
                  void MainWindow::keyPressEvent(QKeyEvent * event)
                  {
                      if (event->isAutoRepeat())
                          return;
                  
                      switch (event->key()) {
                      case Qt::Key_CameraFocus:
                          displayViewfinder();
                          m_camera->searchAndLock();
                          event->accept();
                          break;
                      default:
                          QMainWindow::keyPressEvent(event);
                      }
                  }
                  
                  void MainWindow::keyReleaseEvent(QKeyEvent *event)
                  {
                      if (event->isAutoRepeat())
                          return;
                  
                      switch (event->key()) {
                      case Qt::Key_CameraFocus:
                          m_camera->unlock();
                          break;
                      default:
                          QMainWindow::keyReleaseEvent(event);
                      }
                  }
                  
                  void MainWindow::updateLockStatus(QCamera::LockStatus status, QCamera::LockChangeReason reason)
                  {
                      QColor indicationColor = Qt::black;
                  
                      switch (status) {
                      case QCamera::Searching:
                          indicationColor = Qt::yellow;
                          break;
                      case QCamera::Locked:
                          indicationColor = Qt::darkGreen;
                          break;
                      case QCamera::Unlocked:
                          indicationColor = reason == QCamera::LockFailed ? Qt::red : Qt::black;
                      }
                  }
                  
                  void MainWindow::startCamera()
                  {
                      m_camera->start();
                  }
                  
                  void MainWindow::stopCamera()
                  {
                      m_camera->stop();
                  }
                  
                  void MainWindow::setExposureCompensation(int index)
                  {
                      m_camera->exposure()->setExposureCompensation(index*0.5);
                  }
                  
                  void MainWindow::displayCameraError()
                  {
                      QMessageBox::warning(this, tr("Camera Error"), m_camera->errorString());
                  }
                  
                  void MainWindow::updateCameraDevice(QAction *action)
                  {
                      setCamera(qvariant_cast<QCameraInfo>(action->data()));
                  }
                  
                  void MainWindow::displayViewfinder()
                  {
                      ui->stackedWidget->setCurrentIndex(0);
                  }
                  
                  void MainWindow::closeEvent(QCloseEvent *event)
                  {
                      if (m_isCapturingImage) {
                          setEnabled(false);
                          m_applicationExiting = true;
                          event->ignore();
                      } else {
                          event->accept();
                      }
                  }
                  
                  MainWindow::~MainWindow()
                  {
                      delete ui;
                  }
                  
                  VRoninV 1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    mchinand
                    wrote on last edited by mchinand
                    #14

                    Edit: Oops, I see VRonin, already mentioned this above.

                    Make sure to also add it to a target_link_libraries statement in your CMakeLists.txt project file, e.g.:

                    target_link_libraries(${PROJECT_NAME} Qt5::Multimedia)

                    This does end up affecting the include directories too which I hadn't expected.

                    1 Reply Last reply
                    0
                    • A aliemrenebiler

                      @VRonin We already added QCameraViewFinder but it is #include <QCameraViewfinder> with "f".

                      CMake version is not important, it was in the example.

                      Full code where QCameraViewfinder exist:

                      #include "mainwindow.h"
                      #include "ui_mainwindow.h"
                      
                      #include <QCameraViewfinder>
                      #include <QCameraInfo>
                      #include <QtWidgets>
                      
                      Q_DECLARE_METATYPE(QCameraInfo)
                      
                      MainWindow::MainWindow(QWidget *parent) :
                          QMainWindow(parent),
                          ui(new Ui::MainWindow)
                      {
                          ui->setupUi(this);
                          connect(this, &MainWindow::newString, this, &MainWindow::newStringSlot);
                          connect(this, &MainWindow::newString2, this, &MainWindow::newString2Slot);
                      
                          //Camera devices:
                          QActionGroup *videoDevicesGroup = new QActionGroup(this);
                          videoDevicesGroup->setExclusive(true);
                          const QList<QCameraInfo> availableCameras = QCameraInfo::availableCameras();
                          for (const QCameraInfo &cameraInfo : availableCameras) {
                              QAction *videoDeviceAction = new QAction(cameraInfo.description(), videoDevicesGroup);
                              videoDeviceAction->setCheckable(true);
                              videoDeviceAction->setData(QVariant::fromValue(cameraInfo));
                              if (cameraInfo == QCameraInfo::defaultCamera())
                                  videoDeviceAction->setChecked(true);
                          }
                          connect(videoDevicesGroup, &QActionGroup::triggered, this, &MainWindow::updateCameraDevice);
                          setCamera(QCameraInfo::defaultCamera());
                      }
                      
                      void MainWindow::newStringSlot(QString txt)
                      {
                          ui->list_lines->addItem(txt);
                      }
                      void MainWindow::newString2Slot(QString txt2)
                      {
                          ui->list_lines_2->addItem(txt2);
                      }
                      
                      void MainWindow::setCamera(const QCameraInfo &cameraInfo)
                      {
                          m_camera.reset(new QCamera(cameraInfo));
                      
                          connect(m_camera.data(), QOverload<QCamera::Error>::of(&QCamera::error), this, &MainWindow::displayCameraError);
                      
                          m_camera->setViewfinder(ui->viewfinder);
                      
                          updateLockStatus(m_camera->lockStatus(), QCamera::UserRequest);
                      
                          connect(m_camera.data(), QOverload<QCamera::LockStatus, QCamera::LockChangeReason>::of(&QCamera::lockStatusChanged),
                                  this, &MainWindow::updateLockStatus);
                      
                          m_camera->start();
                      }
                      
                      
                      void MainWindow::keyPressEvent(QKeyEvent * event)
                      {
                          if (event->isAutoRepeat())
                              return;
                      
                          switch (event->key()) {
                          case Qt::Key_CameraFocus:
                              displayViewfinder();
                              m_camera->searchAndLock();
                              event->accept();
                              break;
                          default:
                              QMainWindow::keyPressEvent(event);
                          }
                      }
                      
                      void MainWindow::keyReleaseEvent(QKeyEvent *event)
                      {
                          if (event->isAutoRepeat())
                              return;
                      
                          switch (event->key()) {
                          case Qt::Key_CameraFocus:
                              m_camera->unlock();
                              break;
                          default:
                              QMainWindow::keyReleaseEvent(event);
                          }
                      }
                      
                      void MainWindow::updateLockStatus(QCamera::LockStatus status, QCamera::LockChangeReason reason)
                      {
                          QColor indicationColor = Qt::black;
                      
                          switch (status) {
                          case QCamera::Searching:
                              indicationColor = Qt::yellow;
                              break;
                          case QCamera::Locked:
                              indicationColor = Qt::darkGreen;
                              break;
                          case QCamera::Unlocked:
                              indicationColor = reason == QCamera::LockFailed ? Qt::red : Qt::black;
                          }
                      }
                      
                      void MainWindow::startCamera()
                      {
                          m_camera->start();
                      }
                      
                      void MainWindow::stopCamera()
                      {
                          m_camera->stop();
                      }
                      
                      void MainWindow::setExposureCompensation(int index)
                      {
                          m_camera->exposure()->setExposureCompensation(index*0.5);
                      }
                      
                      void MainWindow::displayCameraError()
                      {
                          QMessageBox::warning(this, tr("Camera Error"), m_camera->errorString());
                      }
                      
                      void MainWindow::updateCameraDevice(QAction *action)
                      {
                          setCamera(qvariant_cast<QCameraInfo>(action->data()));
                      }
                      
                      void MainWindow::displayViewfinder()
                      {
                          ui->stackedWidget->setCurrentIndex(0);
                      }
                      
                      void MainWindow::closeEvent(QCloseEvent *event)
                      {
                          if (m_isCapturingImage) {
                              setEnabled(false);
                              m_applicationExiting = true;
                              event->ignore();
                          } else {
                              event->accept();
                          }
                      }
                      
                      MainWindow::~MainWindow()
                      {
                          delete ui;
                      }
                      
                      VRoninV Offline
                      VRoninV Offline
                      VRonin
                      wrote on last edited by
                      #15

                      @aliemrenebiler said in Add QCamera to CMakeList (ROS integrated Qt Project):

                      CMake version is not important,

                      Then don't use obsolete concepts:

                      cmake_minimum_required(VERSION 3.9)
                      project(sabun)
                      
                      ## Find catkin macros and libraries
                      find_package(catkin REQUIRED COMPONENTS
                        roscpp
                        std_msgs
                      )
                      
                      
                      # Configure Catkin dependencies
                      catkin_package(
                        CATKIN_DEPENDS
                          roscpp
                          std_msgs
                      )
                      ###############################
                      # Basic, non-qt talker/listener
                      add_executable(listener src/listener.cpp)
                      add_executable(talker src/talker.cpp)
                      set_target_properties(listener PROPERTIES
                          CXX_STANDARD 11
                          CXX_STANDARD_REQUIRED ON
                      )
                      set_target_properties(talker PROPERTIES
                          CXX_STANDARD 11
                          CXX_STANDARD_REQUIRED ON
                      )
                      
                      target_include_directories(listener PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                      target_include_directories(talker PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                      target_link_libraries(listener PRIVATE ${catkin_LIBRARIES})
                      target_link_libraries(talker PRIVATE ${catkin_LIBRARIES})
                      
                      ################################################
                      # Cmd line talker/listener running qt event loop
                      # Find Qt5 libraries
                      find_package(Qt5 REQUIRED COMPONENTS
                        Core
                        Qml
                        Quick
                        Widgets
                        Multimedia
                      )
                      add_executable(listener_qt src/listener_qt.cpp)
                      add_executable(talker_qt src/talker_qt.cpp)
                      target_include_directories(listener_qt PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                      target_include_directories(talker_qt PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                      set_target_properties(listener_qt PROPERTIES
                          AUTOMOC ON
                          CXX_STANDARD 11
                          CXX_STANDARD_REQUIRED ON
                      )
                      set_target_properties(talker_qt PROPERTIES
                          AUTOMOC ON
                          CXX_STANDARD 11
                          CXX_STANDARD_REQUIRED ON
                      )
                      target_link_libraries(listener_qt PRIVATE
                        ${catkin_LIBRARIES}
                        Qt5::Core
                        Qt5::Multimedia
                      )
                      
                      target_link_libraries(talker_qt PRIVATE
                        ${catkin_LIBRARIES}
                        Qt5::Core
                        Qt5::Multimedia
                      )
                      
                      
                      ######################################
                      # Talker and Listener using QML gui
                      
                      # Build executables with source, MOC result files, RCC result files
                      add_executable(listener_qml src/listener_qml.cpp include/qml_mediator.h src/display.qrc)
                      add_executable(talker_qml src/talker_qml.cpp include/qml_mediator.h src/display.qrc)
                      target_include_directories(listener_qml PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                      target_include_directories(talker_qml PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                      set_target_properties(listener_qml PROPERTIES
                          AUTOMOC ON
                          AUTORCC ON
                          CXX_STANDARD 11
                          CXX_STANDARD_REQUIRED ON
                      )
                      set_target_properties(talker_qml PROPERTIES
                          AUTOMOC ON
                          AUTORCC ON
                          CXX_STANDARD 11
                          CXX_STANDARD_REQUIRED ON
                      )
                      
                      target_link_libraries(listener_qml PRIVATE
                        ${catkin_LIBRARIES}
                        Qt5::Core
                        Qt5::Qml
                        Qt5::Quick
                        Qt5::Multimedia
                      )
                      
                      target_link_libraries(talker_qml PRIVATE
                        ${catkin_LIBRARIES}
                        Qt5::Core
                        Qt5::Qml
                        Qt5::Quick
                        Qt5::Multimedia
                      )
                      
                      ########################################
                      # Talker and Listener using QWidgets gui
                      
                      add_executable(talker_wig src/talker_wig.cpp src/mainwindow.cpp include/mainwindow.h ui/mainwindow.ui)
                      add_executable(listener_wig src/listener_wig.cpp src/mainwindow.cpp include/mainwindow.h ui/mainwindow.ui)
                      target_include_directories(talker_wig PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                      target_include_directories(listener_wig PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                      set_target_properties(listener_wig PROPERTIES
                          AUTOMOC ON
                          AUTORCC ON
                          AUTOUIC ON
                          CXX_STANDARD 11
                          CXX_STANDARD_REQUIRED ON
                      )
                      set_target_properties(talker_wig PROPERTIES
                          AUTOMOC ON
                          AUTORCC ON
                          AUTOUIC ON
                          CXX_STANDARD 11
                          CXX_STANDARD_REQUIRED ON
                      )
                      target_link_libraries(listener_wig PRIVATE
                        ${catkin_LIBRARIES}
                        Qt5::Core
                        Qt5::Widgets
                        Qt5::Multimedia
                      )
                      target_link_libraries(talker_wig PRIVATE
                        ${catkin_LIBRARIES}
                        Qt5::Core
                        Qt5::Widgets
                        Qt5::Multimedia
                      )
                      

                      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                      ~Napoleon Bonaparte

                      On a crusade to banish setIndexWidget() from the holy land of Qt

                      A 1 Reply Last reply
                      1
                      • VRoninV VRonin

                        @aliemrenebiler said in Add QCamera to CMakeList (ROS integrated Qt Project):

                        CMake version is not important,

                        Then don't use obsolete concepts:

                        cmake_minimum_required(VERSION 3.9)
                        project(sabun)
                        
                        ## Find catkin macros and libraries
                        find_package(catkin REQUIRED COMPONENTS
                          roscpp
                          std_msgs
                        )
                        
                        
                        # Configure Catkin dependencies
                        catkin_package(
                          CATKIN_DEPENDS
                            roscpp
                            std_msgs
                        )
                        ###############################
                        # Basic, non-qt talker/listener
                        add_executable(listener src/listener.cpp)
                        add_executable(talker src/talker.cpp)
                        set_target_properties(listener PROPERTIES
                            CXX_STANDARD 11
                            CXX_STANDARD_REQUIRED ON
                        )
                        set_target_properties(talker PROPERTIES
                            CXX_STANDARD 11
                            CXX_STANDARD_REQUIRED ON
                        )
                        
                        target_include_directories(listener PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                        target_include_directories(talker PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                        target_link_libraries(listener PRIVATE ${catkin_LIBRARIES})
                        target_link_libraries(talker PRIVATE ${catkin_LIBRARIES})
                        
                        ################################################
                        # Cmd line talker/listener running qt event loop
                        # Find Qt5 libraries
                        find_package(Qt5 REQUIRED COMPONENTS
                          Core
                          Qml
                          Quick
                          Widgets
                          Multimedia
                        )
                        add_executable(listener_qt src/listener_qt.cpp)
                        add_executable(talker_qt src/talker_qt.cpp)
                        target_include_directories(listener_qt PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                        target_include_directories(talker_qt PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                        set_target_properties(listener_qt PROPERTIES
                            AUTOMOC ON
                            CXX_STANDARD 11
                            CXX_STANDARD_REQUIRED ON
                        )
                        set_target_properties(talker_qt PROPERTIES
                            AUTOMOC ON
                            CXX_STANDARD 11
                            CXX_STANDARD_REQUIRED ON
                        )
                        target_link_libraries(listener_qt PRIVATE
                          ${catkin_LIBRARIES}
                          Qt5::Core
                          Qt5::Multimedia
                        )
                        
                        target_link_libraries(talker_qt PRIVATE
                          ${catkin_LIBRARIES}
                          Qt5::Core
                          Qt5::Multimedia
                        )
                        
                        
                        ######################################
                        # Talker and Listener using QML gui
                        
                        # Build executables with source, MOC result files, RCC result files
                        add_executable(listener_qml src/listener_qml.cpp include/qml_mediator.h src/display.qrc)
                        add_executable(talker_qml src/talker_qml.cpp include/qml_mediator.h src/display.qrc)
                        target_include_directories(listener_qml PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                        target_include_directories(talker_qml PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                        set_target_properties(listener_qml PROPERTIES
                            AUTOMOC ON
                            AUTORCC ON
                            CXX_STANDARD 11
                            CXX_STANDARD_REQUIRED ON
                        )
                        set_target_properties(talker_qml PROPERTIES
                            AUTOMOC ON
                            AUTORCC ON
                            CXX_STANDARD 11
                            CXX_STANDARD_REQUIRED ON
                        )
                        
                        target_link_libraries(listener_qml PRIVATE
                          ${catkin_LIBRARIES}
                          Qt5::Core
                          Qt5::Qml
                          Qt5::Quick
                          Qt5::Multimedia
                        )
                        
                        target_link_libraries(talker_qml PRIVATE
                          ${catkin_LIBRARIES}
                          Qt5::Core
                          Qt5::Qml
                          Qt5::Quick
                          Qt5::Multimedia
                        )
                        
                        ########################################
                        # Talker and Listener using QWidgets gui
                        
                        add_executable(talker_wig src/talker_wig.cpp src/mainwindow.cpp include/mainwindow.h ui/mainwindow.ui)
                        add_executable(listener_wig src/listener_wig.cpp src/mainwindow.cpp include/mainwindow.h ui/mainwindow.ui)
                        target_include_directories(talker_wig PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                        target_include_directories(listener_wig PRIVATE ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ${catkin_INCLUDE_DIRS})
                        set_target_properties(listener_wig PROPERTIES
                            AUTOMOC ON
                            AUTORCC ON
                            AUTOUIC ON
                            CXX_STANDARD 11
                            CXX_STANDARD_REQUIRED ON
                        )
                        set_target_properties(talker_wig PROPERTIES
                            AUTOMOC ON
                            AUTORCC ON
                            AUTOUIC ON
                            CXX_STANDARD 11
                            CXX_STANDARD_REQUIRED ON
                        )
                        target_link_libraries(listener_wig PRIVATE
                          ${catkin_LIBRARIES}
                          Qt5::Core
                          Qt5::Widgets
                          Qt5::Multimedia
                        )
                        target_link_libraries(talker_wig PRIVATE
                          ${catkin_LIBRARIES}
                          Qt5::Core
                          Qt5::Widgets
                          Qt5::Multimedia
                        )
                        
                        A Offline
                        A Offline
                        aliemrenebiler
                        wrote on last edited by
                        #16

                        @VRonin sorry but that didn't work :(

                        Makefile:145: recipe for target 'all' failed
                        make: *** [all] Error 2
                        Invoking "make -j8 -l8" failed
                        

                        We just discovered that we don't need CameraViewfinder. We completely deleted it from mainwindow.cpp but still ui_mainwindow.h sees it.

                        In file included from /home/aliemre/QTCreator_Files/aliemre_ws/src/ROS-QML-Deneme-V5/ROS_QML_Example-master/src/mainwindow.cpp:2:0:
                        /home/aliemre/QTCreator_Files/aliemre_ws/build/ROS-QML-Deneme-V5/ROS_QML_Example-master/ui_mainwindow.h:24:10: fatal error: qcameraviewfinder.h: No such file or directory
                         #include "qcameraviewfinder.h"
                        
                        VRoninV 1 Reply Last reply
                        0
                        • A aliemrenebiler

                          @VRonin sorry but that didn't work :(

                          Makefile:145: recipe for target 'all' failed
                          make: *** [all] Error 2
                          Invoking "make -j8 -l8" failed
                          

                          We just discovered that we don't need CameraViewfinder. We completely deleted it from mainwindow.cpp but still ui_mainwindow.h sees it.

                          In file included from /home/aliemre/QTCreator_Files/aliemre_ws/src/ROS-QML-Deneme-V5/ROS_QML_Example-master/src/mainwindow.cpp:2:0:
                          /home/aliemre/QTCreator_Files/aliemre_ws/build/ROS-QML-Deneme-V5/ROS_QML_Example-master/ui_mainwindow.h:24:10: fatal error: qcameraviewfinder.h: No such file or directory
                           #include "qcameraviewfinder.h"
                          
                          VRoninV Offline
                          VRoninV Offline
                          VRonin
                          wrote on last edited by
                          #17

                          @aliemrenebiler said in Add QCamera to CMakeList (ROS integrated Qt Project):

                          Makefile:145: recipe for target 'all' failed
                          make: *** [all] Error 2
                          Invoking "make -j8 -l8" failed

                          This is not a great error, did it spit out anything more detailed and useful?

                          ui_mainwindow.h sees it.

                          Can you post the contents of it?

                          "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                          ~Napoleon Bonaparte

                          On a crusade to banish setIndexWidget() from the holy land of Qt

                          A 1 Reply Last reply
                          0
                          • VRoninV VRonin

                            @aliemrenebiler said in Add QCamera to CMakeList (ROS integrated Qt Project):

                            Makefile:145: recipe for target 'all' failed
                            make: *** [all] Error 2
                            Invoking "make -j8 -l8" failed

                            This is not a great error, did it spit out anything more detailed and useful?

                            ui_mainwindow.h sees it.

                            Can you post the contents of it?

                            A Offline
                            A Offline
                            aliemrenebiler
                            wrote on last edited by aliemrenebiler
                            #18

                            @VRonin ui_mainwindow.h is not a library file, it is basicly "mainwindow.ui"

                            After I wrote that, I discovered that qcameraviewfinder.h is neccessary. I added it again and will try to implement other things on your CMakeList.txt, I will post it later.

                            [EDIT]
                            I tried to add it like this.

                            find_package(Qt5Multimedia REQUIRED COMPONENTS
                              qcameraviewfinder.h
                            )
                            
                            1 Reply Last reply
                            0
                            • A Offline
                              A Offline
                              aliemrenebiler
                              wrote on last edited by
                              #19

                              I will close this section and start a new one.

                              1 Reply Last reply
                              0

                              • Login

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • Users
                              • Groups
                              • Search
                              • Get Qt Extensions
                              • Unsolved