Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt
  • Unsolved
Collapse
qtws26_logo

The Qt Event of the Year: Qt World Summit 2026

Save Your Spot >
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Add QCamera to CMakeList (ROS integrated Qt Project)
Qt 6.12 LTS 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.5k 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.
  • A aliemrenebiler

    @SGaist Hi.

    So how can i add this to CMakeList? I know that it is a part of it but ROS don't see it for some reason.

    jsulmJ Offline
    jsulmJ Offline
    jsulm
    Lifetime Qt Champion
    wrote on last edited by
    #5

    @aliemrenebiler

    find_package(Qt5Multimedia REQUIRED)
    

    https://forum.qt.io/topic/113070/qt-code-of-conduct

    A 1 Reply Last reply
    0
    • 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
                                • Unsolved