Files
qTier/CMakeLists.txt
2024-05-27 13:53:31 -05:00

94 lines
3.0 KiB
CMake

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()