Skip to content

Commit 961000e

Browse files
committed
Add GTK 4 Cubescape example
1 parent c5ac565 commit 961000e

18 files changed

+1096
-3
lines changed

cmake/FindGTK4.cmake

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
2+
# GTK4::GTK4
3+
# GTK4_FOUND
4+
# GTK4_INCLUDE_DIRS
5+
# GTK4_LIBRARIES
6+
7+
include(FindPackageHandleStandardArgs)
8+
9+
find_package(PkgConfig QUIET)
10+
pkg_check_modules(GTK4 QUIET IMPORTED_TARGET gtk4)
11+
12+
set(GTK4_FOUND OFF)
13+
14+
if(TARGET PkgConfig::GTK4)
15+
set(GTK4_FOUND ON)
16+
17+
add_library(GTK4::GTK4 INTERFACE IMPORTED)
18+
19+
set_target_properties(GTK4::GTK4 PROPERTIES
20+
INTERFACE_LINK_LIBRARIES PkgConfig::GTK4
21+
)
22+
23+
endif()
24+
25+
find_package_handle_standard_args(GTK4 DEFAULT_MSG GTK4_FOUND)
26+
mark_as_advanced(GTK4_FOUND)

source/examples/CMakeLists.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,5 @@ add_subdirectory("cubescape-log")
1212
add_subdirectory("cubescape-wgl")
1313
add_subdirectory("cubescape-qt")
1414
add_subdirectory("cubescape-sdl")
15-
add_subdirectory("cubescape-gtk")
15+
add_subdirectory("cubescape-gtk3")
16+
add_subdirectory("cubescape-gtk4")

source/examples/cubescape-gtk/CMakeLists.txt source/examples/cubescape-gtk3/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ find_package(cpplocate QUIET)
1212
#
1313

1414
# Target name
15-
set(target cubescape-gtk)
15+
set(target cubescape-gtk3)
1616

1717
# Exit here if required dependencies are not met
1818
if (NOT TARGET GTK3::GTK3)
19-
message("Example ${target} skipped: GTK+ 3 not found")
19+
message("Example ${target} skipped: GTK 3 not found")
2020
return()
2121
endif()
2222

File renamed without changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
2+
#
3+
# External dependencies
4+
#
5+
6+
find_package(GTK4 REQUIRED)
7+
find_package(cpplocate QUIET)
8+
9+
10+
#
11+
# Executable name and options
12+
#
13+
14+
# Target name
15+
set(target cubescape-gtk4)
16+
17+
# Exit here if required dependencies are not met
18+
if (NOT TARGET GTK4::GTK4)
19+
message("Example ${target} skipped: GTK 4 not found")
20+
return()
21+
endif()
22+
23+
if (NOT cpplocate_FOUND)
24+
message(STATUS "Example ${target}: using static data path (cpplocate not found)")
25+
else()
26+
message(STATUS "Example ${target}")
27+
endif()
28+
29+
30+
#
31+
# Sources
32+
#
33+
34+
set(sources
35+
main.cpp
36+
CubeScape.cpp
37+
CubeScape.h
38+
glutils.cpp
39+
glutils.h
40+
RawFile.cpp
41+
RawFile.h
42+
)
43+
44+
45+
#
46+
# Create executable
47+
#
48+
49+
# Build executable
50+
add_executable(${target}
51+
MACOSX_BUNDLE
52+
${sources}
53+
)
54+
55+
# Create namespaced alias
56+
add_executable(${META_PROJECT_NAME}::${target} ALIAS ${target})
57+
58+
59+
#
60+
# Project options
61+
#
62+
63+
set_target_properties(${target}
64+
PROPERTIES
65+
${DEFAULT_PROJECT_OPTIONS}
66+
INSTALL_RPATH "${EXECUTABLE_INSTALL_RPATH}"
67+
FOLDER "${IDE_FOLDER}"
68+
)
69+
70+
71+
#
72+
# Include directories
73+
#
74+
75+
target_include_directories(${target}
76+
PRIVATE
77+
${DEFAULT_INCLUDE_DIRECTORIES}
78+
${PROJECT_BINARY_DIR}/source/include
79+
SYSTEM
80+
)
81+
82+
83+
#
84+
# Libraries
85+
#
86+
87+
target_link_libraries(${target}
88+
PRIVATE
89+
${DEFAULT_LIBRARIES}
90+
GTK4::GTK4
91+
${META_PROJECT_NAME}::glbinding
92+
${META_PROJECT_NAME}::glbinding-aux
93+
$<$<BOOL:${cpplocate_FOUND}>:cpplocate::cpplocate>
94+
)
95+
96+
97+
#
98+
# Compile definitions
99+
#
100+
101+
target_compile_definitions(${target}
102+
PRIVATE
103+
${DEFAULT_COMPILE_DEFINITIONS}
104+
$<$<BOOL:${cpplocate_FOUND}>:cpplocate_FOUND>
105+
)
106+
107+
108+
#
109+
# Compile options
110+
#
111+
112+
target_compile_options(${target}
113+
PRIVATE
114+
${DEFAULT_COMPILE_OPTIONS_PRIVATE}
115+
PUBLIC
116+
${DEFAULT_COMPILE_OPTIONS_PUBLIC}
117+
)
118+
119+
120+
#
121+
# Linker options
122+
#
123+
124+
target_link_libraries(${target}
125+
PRIVATE
126+
${DEFAULT_LINKER_OPTIONS}
127+
)
128+
129+
130+
#
131+
# Target Health
132+
#
133+
134+
perform_health_checks(
135+
${target}
136+
${sources}
137+
)
138+
139+
140+
#
141+
# Deployment
142+
#
143+
144+
# Executable
145+
install(TARGETS ${target}
146+
RUNTIME DESTINATION ${INSTALL_EXAMPLES} COMPONENT examples_sdl
147+
BUNDLE DESTINATION ${INSTALL_EXAMPLES} COMPONENT examples_sdl
148+
)

0 commit comments

Comments
 (0)