-
Notifications
You must be signed in to change notification settings - Fork 2
/
CMakeLists.txt
125 lines (103 loc) · 3.55 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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
cmake_minimum_required(VERSION 3.5)
project(terrain-gen VERSION 0.1 LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(QT NAMES Qt6 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets OpenGLWidgets)
find_package(OpenGL REQUIRED)
set(PROJECT_SOURCES
FastNoiseLite/FastNoiseLite.h
bitmap.h
bitmap.cpp
camera.h
camera.cpp
main.cpp
mainwindow.cpp
mainwindow.h
mainwindow.ui
shader.h
shader.cpp
nodes/multiplynoisedatamodel.h
nodes/multiplynoisedatamodel.cpp
nodes/noiseoutputdatamodel.h
nodes/noiseoutputdatamodel.cpp
nodes/noisesamplerdatamodel.h
nodes/noisesamplerdatamodel.cpp
nodes/numbersourcedatamodel.h
nodes/numbersourcedatamodel.cpp
nodes/data/heightdata.h
nodes/data/heightdata.cpp
nodes/data/heightmapdata.h
nodes/data/heightmapdata.cpp
nodes/data/integerdata.h
nodes/data/integerdata.cpp
nodes/data/multiplyoperationdata.h
nodes/data/multiplyoperationdata.cpp
nodes/data/noisedata.h
nodes/data/noisesamplerdata.h
nodes/data/noisesamplerdata.cpp
nodes/widgets/noisepropertiespopupwidget.h
nodes/widgets/noisepropertiespopupwidget.cpp
nodes/widgets/noisetypeselectorwidget.h
nodes/widgets/noisetypeselectorwidget.cpp
widgets/heightmapeditortab.h
widgets/heightmapeditortab.cpp
widgets/terrainviewwidget.h
widgets/terrainviewwidget.cpp
)
# various directories we need to keep track of
set(TG_SHADER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/shaders)
set(QT_NODES_DIR ${CMAKE_CURRENT_SOURCE_DIR}/nodeeditor)
# node editor library
add_subdirectory(${QT_NODES_DIR})
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
qt_add_executable(terrain-gen
MANUAL_FINALIZATION
${PROJECT_SOURCES}
)
# Define target properties for Android with Qt 6 as:
# set_property(TARGET terrain-gen 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(terrain-gen 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(terrain-gen
${PROJECT_SOURCES}
)
endif()
endif()
target_link_libraries(terrain-gen PRIVATE
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::OpenGLWidgets
QtNodes
opengl32)
target_include_directories(terrain-gen PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}glm
${QT_NODES_DIR})
add_custom_command(
TARGET terrain-gen POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${TG_SHADER_DIR} $<TARGET_FILE_DIR:terrain-gen>/shaders)
set_target_properties(terrain-gen PROPERTIES
MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
MACOSX_BUNDLE TRUE
WIN32_EXECUTABLE TRUE
)
install(TARGETS terrain-gen
BUNDLE DESTINATION .
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(QT_VERSION_MAJOR EQUAL 6)
qt_finalize_executable(terrain-gen)
endif()