Skip to content

Commit

Permalink
Add GTK+ 3 cubescape example
Browse files Browse the repository at this point in the history
  • Loading branch information
scheibel committed Feb 25, 2024
1 parent c59e2ab commit c5ac565
Show file tree
Hide file tree
Showing 10 changed files with 1,048 additions and 1 deletion.
27 changes: 27 additions & 0 deletions cmake/FindGTK3.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@

# GTK3::GTK3
# GTK3_FOUND
# GTK3_INCLUDE_DIRS
# GTK3_LIBRARIES

include(FindPackageHandleStandardArgs)

find_package(PkgConfig QUIET)
pkg_check_modules(GTK3 QUIET gtk+-3.0)

if(GTK3_FOUND)

add_library(GTK3::GTK3 INTERFACE IMPORTED)

set_target_properties(GTK3::GTK3 PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${GTK3_INCLUDE_DIRS}"
)

set_target_properties(GTK3::GTK3 PROPERTIES
INTERFACE_LINK_LIBRARIES "${GTK3_LIBRARIES}"
)

endif()

find_package_handle_standard_args(GTK3 DEFAULT_MSG REQUIRED_VARS GTK3_FOUND)
mark_as_advanced(GTK3_FOUND GTK3_INCLUDE_DIRS GTK3_LIBRARIES)
3 changes: 2 additions & 1 deletion source/examples/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ add_subdirectory("cubescape-gles")
add_subdirectory("cubescape-log")
add_subdirectory("cubescape-wgl")
add_subdirectory("cubescape-qt")
add_subdirectory("cubescape-sdl")
add_subdirectory("cubescape-sdl")
add_subdirectory("cubescape-gtk")
148 changes: 148 additions & 0 deletions source/examples/cubescape-gtk/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@

#
# External dependencies
#

find_package(GTK3 QUIET)
find_package(cpplocate QUIET)


#
# Executable name and options
#

# Target name
set(target cubescape-gtk)

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

if (NOT cpplocate_FOUND)
message(STATUS "Example ${target}: using static data path (cpplocate not found)")
else()
message(STATUS "Example ${target}")
endif()


#
# Sources
#

set(sources
main.cpp
CubeScape.cpp
CubeScape.h
glutils.cpp
glutils.h
RawFile.cpp
RawFile.h
)


#
# Create executable
#

# Build executable
add_executable(${target}
MACOSX_BUNDLE
${sources}
)

# Create namespaced alias
add_executable(${META_PROJECT_NAME}::${target} ALIAS ${target})


#
# Project options
#

set_target_properties(${target}
PROPERTIES
${DEFAULT_PROJECT_OPTIONS}
INSTALL_RPATH "${EXECUTABLE_INSTALL_RPATH}"
FOLDER "${IDE_FOLDER}"
)


#
# Include directories
#

target_include_directories(${target}
PRIVATE
${DEFAULT_INCLUDE_DIRECTORIES}
${PROJECT_BINARY_DIR}/source/include
SYSTEM
)


#
# Libraries
#

target_link_libraries(${target}
PRIVATE
${DEFAULT_LIBRARIES}
GTK3::GTK3
${META_PROJECT_NAME}::glbinding
${META_PROJECT_NAME}::glbinding-aux
$<$<BOOL:${cpplocate_FOUND}>:cpplocate::cpplocate>
)


#
# Compile definitions
#

target_compile_definitions(${target}
PRIVATE
${DEFAULT_COMPILE_DEFINITIONS}
$<$<BOOL:${cpplocate_FOUND}>:cpplocate_FOUND>
)


#
# Compile options
#

target_compile_options(${target}
PRIVATE
${DEFAULT_COMPILE_OPTIONS_PRIVATE}
PUBLIC
${DEFAULT_COMPILE_OPTIONS_PUBLIC}
)


#
# Linker options
#

target_link_libraries(${target}
PRIVATE
${DEFAULT_LINKER_OPTIONS}
)


#
# Target Health
#

perform_health_checks(
${target}
${sources}
)


#
# Deployment
#

# Executable
install(TARGETS ${target}
RUNTIME DESTINATION ${INSTALL_EXAMPLES} COMPONENT examples_sdl
BUNDLE DESTINATION ${INSTALL_EXAMPLES} COMPONENT examples_sdl
)
Loading

0 comments on commit c5ac565

Please sign in to comment.