cmake_minimum_required(VERSION 3.5) project(qt-app VERSION 0.1 LANGUAGES CXX) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Network) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS WebSockets) set(PROJECT_SOURCES main.cpp mainwindow.cpp mainwindow.h mainwindow.ui ) if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) qt_add_executable(qt-app MANUAL_FINALIZATION ${PROJECT_SOURCES} tiercard.hpp tiercard.cpp flowlayout.cpp flowlayout.h tiercardlayout.hpp tiercardlayout.cpp aspectratiopixmaplabel.hpp aspectratiopixmaplabel.cpp fullsizelayout.hpp fullsizelayout.cpp tierrow.hpp tierrow.cpp tierrowtitlecard.hpp tierrowtitlecard.cpp myflowlayout.hpp myflowlayout.cpp utils.hpp rowholder.hpp rowholder.cpp settings.hpp settings.cpp invalididexception.hpp invalididexception.cpp tierplaceholder.hpp tierplaceholder.cpp chatreader.hpp chatreader.cpp chatmessage.hpp chatmessage.cpp messagetype.hpp messagetype.cpp ircmessagetype.hpp ircmessagetype.cpp ircexception.hpp ircexception.cpp ) # Define target properties for Android with Qt 6 as: # set_property(TARGET qt-app 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(qt-app 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(qt-app ${PROJECT_SOURCES} ) endif() endif() target_link_libraries(qt-app PRIVATE Qt${QT_VERSION_MAJOR}::Widgets) target_link_libraries(qt-app PRIVATE Qt${QT_VERISON_MAJOR}::Network) target_link_libraries(qt-app PRIVATE Qt${QT_VERISON_MAJOR}::WebSockets) # Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1. # If you are developing for iOS or macOS you should consider setting an # explicit, fixed bundle identifier manually though. if(${QT_VERSION} VERSION_LESS 6.1.0) set(BUNDLE_ID_OPTION MACOSX_BUNDLE_GUI_IDENTIFIER com.example.qt-app) endif() set_target_properties(qt-app PROPERTIES ${BUNDLE_ID_OPTION} MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} MACOSX_BUNDLE TRUE WIN32_EXECUTABLE TRUE ) include(GNUInstallDirs) install(TARGETS qt-app BUNDLE DESTINATION . LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) if(QT_VERSION_MAJOR EQUAL 6) qt_finalize_executable(qt-app) endif()