-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCMakeLists.txt
112 lines (93 loc) · 3.37 KB
/
CMakeLists.txt
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
108
109
110
111
cmake_minimum_required(VERSION 3.17)
project(qml_shader_effects_qt6 VERSION 1.0.0 LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
option(BUILD_EXAMPLE "Set to ON to build example project" OFF)
find_package(Qt6 REQUIRED COMPONENTS Core Quick Widgets ShaderTools)
#sum up project Files
file(GLOB_RECURSE QML_SHADER_EFFECTS_SOURCES
${CMAKE_CURRENT_LIST_DIR}/src/*.cpp
)
file(GLOB_RECURSE QML_SHADER_EFFECTS_HEADER
${CMAKE_CURRENT_LIST_DIR}/src/*.h
)
qt6_add_resources(QML_SHADER_EFFECTS_RESOURCES ${CMAKE_CURRENT_LIST_DIR}/src/qml_files/qml.qrc)
add_library(qml_shader_effects_qt6
SHARED
${QML_SHADER_EFFECTS_SOURCES}
${QML_SHADER_EFFECTS_HEADER}
${QML_SHADER_EFFECTS_RESOURCES}
${CMAKE_CURRENT_LIST_DIR}/src/qml_files/ShaderEffects/qmldir
)
target_include_directories(qml_shader_effects_qt6
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
PRIVATE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}>
)
target_link_libraries(qml_shader_effects_qt6
PUBLIC
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Quick
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::ShaderTools
)
if(${BUILD_EXAMPLE})
add_subdirectory(example)
set_target_properties(qml_shader_effects_qt6 PROPERTIES
WIN32_EXECUTABLE TRUE
MACOSX_BUNDLE TRUE
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/example/ShaderEffects/"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/example/ShaderEffects/"
)
else()
set_target_properties(qml_shader_effects_qt6 PROPERTIES
WIN32_EXECUTABLE TRUE
MACOSX_BUNDLE TRUE
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/qml/ShaderEffects/"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/qml/ShaderEffects/"
)
endif()
qt6_add_shaders(qml_shader_effects_qt6 "qml_shader_effects_qt6_shaders"
BATCHABLE
#PRECOMPILE -> Causes write error on disc
#OPTIMIZED
PREFIX "/"
FILES
"src/qml_files/ShaderEffects/colorOverlayShader.frag"
"src/qml_files/ShaderEffects/dropShadowShader.vert"
"src/qml_files/ShaderEffects/dropShadowShader.frag"
"src/qml_files/ShaderEffects/opacityMaskShader.frag"
)
# configure *.cmake File
include(CMakePackageConfigHelpers)
write_basic_package_version_file(
qml_shader_effects_qt6Version.cmake
VERSION ${PACKAGE_VERSION}
COMPATIBILITY AnyNewerVersion
)
if(${BUILD_EXAMPLE})
# Copy ShaderEffects to binary dir
add_custom_command(
TARGET qml_shader_effects_qt6
COMMAND ${CMAKE_COMMAND} -E copy
"${CMAKE_CURRENT_SOURCE_DIR}/src/qml_files/ShaderEffects/qmldir"
"${CMAKE_BINARY_DIR}/example/ShaderEffects/qmldir"
BYPRODUCTS ${CMAKE_BINARY_DIR}/example/ShaderEffects/qmldir
)
else()
add_custom_command(
TARGET qml_shader_effects_qt6
COMMAND ${CMAKE_COMMAND} -E copy
"${CMAKE_CURRENT_SOURCE_DIR}/src/qml_files/ShaderEffects/qmldir"
"${CMAKE_BINARY_DIR}/qml/ShaderEffects/qmldir"
BYPRODUCTS ${CMAKE_BINARY_DIR}/qml/ShaderEffects/qmldir
)
endif()
# Install files
install(TARGETS qml_shader_effects_qt6 DESTINATION qml/ShaderEffects)
install(FILES ${CMAKE_BINARY_DIR}/qml/ShaderEffects/qmldir DESTINATION qml/ShaderEffects)