forked from Tencent/libpag
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
107 lines (90 loc) · 4.02 KB
/
CMakeLists.txt
File metadata and controls
107 lines (90 loc) · 4.02 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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
cmake_minimum_required(VERSION 3.13)
project(PAGViewer)
include(../third_party/vendor_tools/vendor.cmake)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
endif ()
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_definitions(-Werror -Wall -Wextra -Weffc++ -pedantic -Werror=return-type -fno-rtti)
endif ()
if (MSVC)
add_compile_options("/utf-8")
add_compile_options(/GR-)
endif (MSVC)
# Sets flags
if (CMAKE_BUILD_TYPE MATCHES "Debug")
add_definitions(-DDEBUG)
endif ()
add_definitions(-DQT_NO_KEYWORDS)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
# configures the local installation path of the QT library.
if (NOT CMAKE_PREFIX_PATH)
if (NOT EXISTS ${PROJECT_SOURCE_DIR}/QTCMAKE.cfg)
file(WRITE ${PROJECT_SOURCE_DIR}/QTCMAKE.cfg
"set(CMAKE_PREFIX_PATH /Users/[username]/Qt/6.6.1/macos/lib/cmake) #put your own QT path here")
endif ()
include("./QTCMAKE.cfg")
endif ()
string(REGEX MATCH "([0-9]+)\\.[0-9]+\\.[0-9]+" QT_VERSION ${CMAKE_PREFIX_PATH})
if (QT_VERSION)
string(REGEX MATCH "^[0-9]+" QT_VERSION_MAJOR ${QT_VERSION})
if (QT_VERSION_MAJOR GREATER_EQUAL 6 AND CMAKE_SIZEOF_VOID_P EQUAL 4)
message(FATAL_ERROR "QT has dropped support for 32-bit builds since version 6.0.0")
endif ()
endif ()
find_package(QT NAMES Qt6 REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets OpenGL Qml Quick QuickControls2)
list(APPEND PAG_VIEWER_PLATFORM_LIBS Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::OpenGL Qt${QT_VERSION_MAJOR}::Qml Qt${QT_VERSION_MAJOR}::Quick
Qt${QT_VERSION_MAJOR}::QuickControls2)
qt_add_resources(QT_RESOURCES res.qrc)
if (APPLE)
find_library(APPLICATION_SERVICES_FRAMEWORK ApplicationServices REQUIRED)
list(APPEND PAG_VIEWER_PLATFORM_LIBS ${APPLICATION_SERVICES_FRAMEWORK})
find_library(QUARTZ_CORE QuartzCore REQUIRED)
list(APPEND PAG_VIEWER_PLATFORM_LIBS ${QUARTZ_CORE})
find_library(COCOA Cocoa REQUIRED)
list(APPEND PAG_VIEWER_PLATFORM_LIBS ${COCOA})
find_library(FOUNDATION Foundation REQUIRED)
list(APPEND PAG_VIEWER_PLATFORM_LIBS ${FOUNDATION})
find_library(ICONV_LIBRARIES NAMES iconv libiconv libiconv-2 c)
list(APPEND PAG_VIEWER_PLATFORM_LIBS ${ICONV_LIBRARIES})
find_library(VIDEOTOOLBOX VideoToolbox)
list(APPEND PAG_VIEWER_PLATFORM_LIBS ${VIDEOTOOLBOX})
find_library(CORE_MEDIA CoreMedia)
list(APPEND PAG_VIEWER_PLATFORM_LIBS ${CORE_MEDIA})
find_library(COMPRESSION_LIBRARIES NAMES compression)
list(APPEND PAG_VIEWER_PLATFORM_LIBS ${COMPRESSION_LIBRARIES})
elseif (WIN32)
set(BUILD_USE_64BITS ON)
add_definitions(-DNOMINMAX -D_USE_MATH_DEFINES)
find_library(Bcrypt_LIB Bcrypt)
list(APPEND PAG_VIEWER_PLATFORM_LIBS ${Bcrypt_LIB})
find_library(ws2_32_LIB ws2_32)
list(APPEND PAG_VIEWER_PLATFORM_LIBS ${ws2_32_LIB})
endif ()
# collects pag include directories.
set(PAG_VIEWER_INCLUDES ./ src ../ ../include ../src ../third_party/tgfx/include)
file(GLOB_RECURSE PAG_VIEWER_SOURCE_FILES src/*.*)
set(PAG_USE_QT ON)
set(PAG_USE_RTTR ON)
set(PAG_USE_LIBAVC OFF)
set(PAG_BUILD_SHARED OFF)
set(PAG_BUILD_FRAMEWORK OFF)
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../ ./libpag)
add_executable(PAGViewer ${RC_FILES} ${PAG_VIEWER_SOURCE_FILES} ${QT_RESOURCES})
if (APPLE)
list(APPEND PAG_VIEWER_INCLUDES ../third_party/out/rttr/mac/include)
list(APPEND VIEWER_VENDOR_LIBRARIES ${CMAKE_SOURCE_DIR}/../vendor/sparkle/mac/Sparkle.framework)
elseif (WIN32)
list(APPEND PAG_VIEWER_INCLUDES ../third_party/out/rttr/win/include)
list(APPEND PAG_VIEWER_INCLUDES ../vendor/winsparkle/include)
list(APPEND VIEWER_VENDOR_LIBRARIES ${CMAKE_SOURCE_DIR}/../vendor/winsparkle/win/x64/${CMAKE_BUILD_TYPE}/WinSparkle.lib)
endif ()
target_include_directories(PAGViewer PUBLIC ${PAG_VIEWER_INCLUDES})
target_link_libraries(PAGViewer pag ${PAG_VIEWER_PLATFORM_LIBS} ${VIEWER_VENDOR_LIBRARIES})