Skip to content

Commit c5ac565

Browse files
committed
Add GTK+ 3 cubescape example
1 parent c59e2ab commit c5ac565

File tree

10 files changed

+1048
-1
lines changed

10 files changed

+1048
-1
lines changed

cmake/FindGTK3.cmake

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
2+
# GTK3::GTK3
3+
# GTK3_FOUND
4+
# GTK3_INCLUDE_DIRS
5+
# GTK3_LIBRARIES
6+
7+
include(FindPackageHandleStandardArgs)
8+
9+
find_package(PkgConfig QUIET)
10+
pkg_check_modules(GTK3 QUIET gtk+-3.0)
11+
12+
if(GTK3_FOUND)
13+
14+
add_library(GTK3::GTK3 INTERFACE IMPORTED)
15+
16+
set_target_properties(GTK3::GTK3 PROPERTIES
17+
INTERFACE_INCLUDE_DIRECTORIES "${GTK3_INCLUDE_DIRS}"
18+
)
19+
20+
set_target_properties(GTK3::GTK3 PROPERTIES
21+
INTERFACE_LINK_LIBRARIES "${GTK3_LIBRARIES}"
22+
)
23+
24+
endif()
25+
26+
find_package_handle_standard_args(GTK3 DEFAULT_MSG REQUIRED_VARS GTK3_FOUND)
27+
mark_as_advanced(GTK3_FOUND GTK3_INCLUDE_DIRS GTK3_LIBRARIES)

source/examples/CMakeLists.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ add_subdirectory("cubescape-gles")
1111
add_subdirectory("cubescape-log")
1212
add_subdirectory("cubescape-wgl")
1313
add_subdirectory("cubescape-qt")
14-
add_subdirectory("cubescape-sdl")
14+
add_subdirectory("cubescape-sdl")
15+
add_subdirectory("cubescape-gtk")
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
2+
#
3+
# External dependencies
4+
#
5+
6+
find_package(GTK3 QUIET)
7+
find_package(cpplocate QUIET)
8+
9+
10+
#
11+
# Executable name and options
12+
#
13+
14+
# Target name
15+
set(target cubescape-gtk)
16+
17+
# Exit here if required dependencies are not met
18+
if (NOT TARGET GTK3::GTK3)
19+
message("Example ${target} skipped: GTK+ 3 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+
GTK3::GTK3
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)