-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
72 lines (66 loc) · 2.56 KB
/
CMakeLists.txt
File metadata and controls
72 lines (66 loc) · 2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
cmake_minimum_required(VERSION 3.23)
project(QtTube
VERSION 1.2.1
DESCRIPTION "A minimalist, cross-platform desktop app for streaming media."
HOMEPAGE_URL "https://github.com/BowDown097/QtTube"
LANGUAGES CXX C)
# CMake options
## Needed for includes in ui files
set(CMAKE_INCLUDE_CURRENT_DIR ON)
## MOC, RCC, and UIC
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
## Standard version
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
## Output executables and libs in the main build folder, not in subfolders
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
if(UNIX)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
endif()
# Names
## App
set(QTTUBE_APP_DESC "${CMAKE_PROJECT_DESCRIPTION}")
set(QTTUBE_APP_NAME "${CMAKE_PROJECT_NAME}")
string(TOLOWER "${QTTUBE_APP_NAME}" QTTUBE_BINARY_NAME)
## Version name
set(QTTUBE_VERSION_MAJOR "${CMAKE_PROJECT_VERSION_MAJOR}")
set(QTTUBE_VERSION_MINOR "${CMAKE_PROJECT_VERSION_MINOR}")
set(QTTUBE_VERSION_NAME "${CMAKE_PROJECT_VERSION}")
if(CMAKE_PROJECT_VERSION_TWEAK)
set(QTTUBE_VERSION_NAME4 "${QTTUBE_VERSION_MAJOR}.${QTTUBE_VERSION_MINOR}.\
${CMAKE_PROJECT_VERSION_PATCH}.${CMAKE_PROJECT_VERSION_TWEAK}")
elseif(CMAKE_PROJECT_VERSION_PATCH)
set(QTTUBE_VERSION_NAME4 "${QTTUBE_VERSION_MAJOR}.${QTTUBE_VERSION_MINOR}.\
${CMAKE_PROJECT_VERSION_PATCH}.0")
else()
set(QTTUBE_VERSION_NAME4 "${QTTUBE_VERSION_MAJOR}.${QTTUBE_VERSION_MINOR}.0.0")
endif()
# macOS bundle settings
if(APPLE)
set(MACOSX_BUNDLE_BUNDLE_NAME "${QTTUBE_APP_NAME}")
set(MACOSX_BUNDLE_BUNDLE_VERSION "${QTTUBE_VERSION_NAME}")
set(MACOSX_BUNDLE_INFO_STRING "${QTTUBE_APP_NAME}: ${QTTUBE_APP_DESC}")
set(MACOSX_BUNDLE_LONG_VERSION_STRING "${QTTUBE_VERSION_NAME}")
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${QTTUBE_VERSION_NAME}")
endif()
# LTO
option(ENABLE_LTO "Enable Link Time Optimization" OFF)
if(ENABLE_LTO)
include(CheckIPOSupported)
check_ipo_supported(RESULT ipo_supported OUTPUT ipo_error)
if(ipo_supported AND (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "MinSizeRel"))
message(STATUS "IPO / LTO enabled")
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION TRUE)
elseif(ipo_supported)
message(STATUS "Not enabling IPO / LTO on debug builds")
else()
message(STATUS "IPO / LTO not supported: <${ipo_error}>")
endif()
endif()
# Components
option(ENABLE_WEB_COMPONENTS "" ON)
add_subdirectory(program_info)
add_subdirectory(plugin_interface)
add_subdirectory(application)