Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt Creator and other tools
  4. Migration CMake projects from Qt4 to Qt5

Migration CMake projects from Qt4 to Qt5

Scheduled Pinned Locked Moved Qt Creator and other tools
1 Posts 1 Posters 4.8k Views 1 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.
  • podsvirovP Offline
    podsvirovP Offline
    podsvirov
    wrote on last edited by
    #1

    As the QtCreator 2.7, I created a simple project "Migration" based on CMake.
    I want to get Qt4/5 compatible file of the project.
    I already have a prototype that I tested with Qt4/5 on Windows and Linux.
    And it works on this little example.
    But I want to get the comments to make the code better.

    The project now consists of three files.

    CMakeLists.txt:
    @
    project(Migration)

    cmake_minimum_required(VERSION 2.8.9)

    list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR})

    aux_source_directory(. SRC_LIST)
    add_executable(${PROJECT_NAME} ${SRC_LIST})

    include(QtMigration)

    QT_USE_MODULES(${PROJECT_NAME} Core Gui)
    @

    QtMigration.cmake:
    @
    cmake_minimum_required(VERSION 2.8.9)

    macro(QT_USE_MODULES _target)
    # Enable AUTOMOC
    set_target_properties(${_target} PROPERTIES AUTOMOC TRUE)
    # Local variables
    set(_modules_qt4)
    set(_modules_qt5)
    # Prepare modules
    foreach(_module ${ARGN})
    list(APPEND _modules_qt4 Qt${_module})
    list(APPEND _modules_qt5 ${_module})
    if(_module MATCHES "Gui")
    list(APPEND _modules_qt5 "Widgets")
    endif(_module MATCHES "Gui")
    endforeach(_module ${ARGN})
    list(REMOVE_DUPLICATES _modules_qt4)
    list(REMOVE_DUPLICATES _modules_qt5)
    # Find Qt libraries
    find_package(Qt5 QUIET COMPONENTS ${_modules_qt5})
    if(Qt5_FOUND)
    qt5_use_modules(${_target} ${_modules_qt5})
    else(Qt5_FOUND)
    find_package(Qt4 QUIET COMPONENTS ${_modules_qt4})
    if(Qt4_FOUND OR QT4_FOUND)
    include(${QT_USE_FILE})
    include_directories(${QT_INCLUDES})
    add_definitions(${QT_DEFINITIONS})
    target_link_libraries(${_target} ${QT_LIBRARIES})
    endif(Qt4_FOUND OR QT4_FOUND)
    endif(Qt5_FOUND)
    endmacro(QT_USE_MODULES)
    @

    And main.cpp:
    @
    #include <QApplication>
    #include <QLabel>

    int main(int argc, char *argv[])
    {
    QApplication app(argc, argv);

    QLabel label(QString("Hello Qt%1!").arg(int(QT_VERSION >> 16)));
    label.setAlignment(Qt::AlignCenter);
    label.resize(200, 100);
    label.show();
    
    return app.exec&#40;&#41;;
    

    }
    @

    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