Migration CMake projects from Qt4 to Qt5



  • 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;;
    

    }
    @


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.