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. CmakeLists.txt or X.pro ?
Forum Updated to NodeBB v4.3 + New Features

CmakeLists.txt or X.pro ?

Scheduled Pinned Locked Moved Solved General and Desktop
2 Posts 2 Posters 210 Views
  • 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.
  • C Offline
    C Offline
    Cervo2paille
    wrote on last edited by Cervo2paille
    #1

    Hello everyone,

    I got a QT Project. By default, it gave me a CMakeLists.txt that i appreciate to use.

    I got a problem to use an include in a file.h (#include <QtSql>) and i read in the documentation that i have to put this "QT += sql" in a file name .pro.

    In what I see, this file seems to do the same thing that my CMakeLists.txt (localise files of my project, add dependance, etc...).
    I can put this line "QT += sql" in my CMakeLists rather than create a .pro ?
    So where can i put it ?
    This is my CMakeLists.txt :

    cmake_minimum_required(VERSION 3.5)
    
    project(blossom VERSION 0.1 LANGUAGES CXX)
    
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
    
    set(CMAKE_AUTOUIC ON)
    set(CMAKE_AUTOMOC ON)
    set(CMAKE_AUTORCC ON)
    
    set(CMAKE_CXX_STANDARD 17)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
    find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
    find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
    
    set(PROJECT_SOURCES
            main.cpp
            resources.qrc
            mainwindow.cpp
            mainwindow.h
            mainwindow.ui
    
            pageconnexion.ui
            pageconnexion.h
            pageconnexion.cpp
    
            pageinscription.ui
            pageinscription.cpp
            pageinscription.h
    )
    
    if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
        qt_add_executable(blossom
            MANUAL_FINALIZATION
            ${PROJECT_SOURCES}
        )
    # Define target properties for Android with Qt 6 as:
    #    set_property(TARGET blossom APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
    #                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
    # For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
    else()
        if(ANDROID)
            add_library(blossom SHARED
                ${PROJECT_SOURCES}
            )
    # Define properties for Android with Qt 5 after find_package() calls as:
    #    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
        else()
            add_executable(blossom
                ${PROJECT_SOURCES}
            )
        endif()
    endif()
    
    target_link_libraries(blossom PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
    
    set_target_properties(blossom PROPERTIES
        MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
        MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
        MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
        MACOSX_BUNDLE TRUE
        WIN32_EXECUTABLE TRUE
    )
    
    install(TARGETS blossom
        BUNDLE DESTINATION .
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
    
    if(QT_VERSION_MAJOR EQUAL 6)
        qt_finalize_executable(blossom)
    endif()
    
    
    

    Thanks pros! :)

    jsulmJ 1 Reply Last reply
    0
    • C Cervo2paille

      Hello everyone,

      I got a QT Project. By default, it gave me a CMakeLists.txt that i appreciate to use.

      I got a problem to use an include in a file.h (#include <QtSql>) and i read in the documentation that i have to put this "QT += sql" in a file name .pro.

      In what I see, this file seems to do the same thing that my CMakeLists.txt (localise files of my project, add dependance, etc...).
      I can put this line "QT += sql" in my CMakeLists rather than create a .pro ?
      So where can i put it ?
      This is my CMakeLists.txt :

      cmake_minimum_required(VERSION 3.5)
      
      project(blossom VERSION 0.1 LANGUAGES CXX)
      
      set(CMAKE_INCLUDE_CURRENT_DIR ON)
      
      set(CMAKE_AUTOUIC ON)
      set(CMAKE_AUTOMOC ON)
      set(CMAKE_AUTORCC ON)
      
      set(CMAKE_CXX_STANDARD 17)
      set(CMAKE_CXX_STANDARD_REQUIRED ON)
      
      find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
      find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
      
      set(PROJECT_SOURCES
              main.cpp
              resources.qrc
              mainwindow.cpp
              mainwindow.h
              mainwindow.ui
      
              pageconnexion.ui
              pageconnexion.h
              pageconnexion.cpp
      
              pageinscription.ui
              pageinscription.cpp
              pageinscription.h
      )
      
      if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
          qt_add_executable(blossom
              MANUAL_FINALIZATION
              ${PROJECT_SOURCES}
          )
      # Define target properties for Android with Qt 6 as:
      #    set_property(TARGET blossom APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
      #                 ${CMAKE_CURRENT_SOURCE_DIR}/android)
      # For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
      else()
          if(ANDROID)
              add_library(blossom SHARED
                  ${PROJECT_SOURCES}
              )
      # Define properties for Android with Qt 5 after find_package() calls as:
      #    set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
          else()
              add_executable(blossom
                  ${PROJECT_SOURCES}
              )
          endif()
      endif()
      
      target_link_libraries(blossom PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
      
      set_target_properties(blossom PROPERTIES
          MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
          MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
          MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
          MACOSX_BUNDLE TRUE
          WIN32_EXECUTABLE TRUE
      )
      
      install(TARGETS blossom
          BUNDLE DESTINATION .
          LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
      
      if(QT_VERSION_MAJOR EQUAL 6)
          qt_finalize_executable(blossom)
      endif()
      
      
      

      Thanks pros! :)

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

      @Cervo2paille If you go to https://doc.qt.io/qt-6/qtsql-index.html you will see what you need to add to CMakeLists.txt file.

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

      1 Reply Last reply
      3

      • Login

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