fltk/examples/CMakeLists.txt

180 lines
4.7 KiB
CMake

#
# CMakeLists.txt used to build example apps by the CMake build system
#
# Copyright 2020-2024 by Bill Spitzak and others.
#
# This library is free software. Distribution and use rights are outlined in
# the file "COPYING" which should have been included with this file. If this
# file is missing or damaged, see the license at:
#
# https://www.fltk.org/COPYING.php
#
# Please see the following page on how to report bugs and issues:
#
# https://www.fltk.org/bugs.php
#
################################################################################
include(../CMake/fl_create_example.cmake)
include(../CMake/FLTK-Functions.cmake)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/../bin/examples)
file(MAKE_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
################################################################################
# create separate lists of all source (.cxx) files
# depending on the required FLTK and system libraries
############################################################
# simple examples w/o extra libs
############################################################
set(SIMPLE_SOURCES
browser-simple
callbacks
chart-simple
draggable-group
grid-simple
howto-add_fd-and-popen
howto-browser-with-icons
howto-drag-and-drop
howto-draw-an-x
howto-flex-simple
howto-menu-with-images
howto-parse-args
howto-remap-numpad-keyboard-keys
howto-text-over-image-button
menubar-add
nativefilechooser-simple
nativefilechooser-simple-app
progress-simple
shapedwindow
simple-terminal
table-as-container
table-simple
table-sort
table-spreadsheet
table-spreadsheet-with-keyboard-nav
table-with-keynav
table-with-right-column-stretch-fit
table-with-right-click-menu
tabs-simple
textdisplay-with-colors
texteditor-simple
texteditor-with-dynamic-colors
tree-as-container
tree-custom-draw-items
tree-custom-sort
tree-of-tables
tree-simple
wizard-simple
)
############################################################
# simple FLUID examples w/o extra libs
############################################################
set(FLUID_SOURCES
fluid-callback
)
############################################################
# examples requiring fltk_images
############################################################
set(IMAGE_SOURCES
animgifimage
animgifimage-play
animgifimage-resize
animgifimage-simple
howto-simple-svg
)
############################################################
# examples requiring cairo
############################################################
set(CAIRO_SOURCES
cairo-draw-x
)
############################################################
# examples requiring OpenGL + libGLEW
############################################################
set(OPENGL_SOURCES
OpenGL3-glut-test
OpenGL3test
)
############################################################
# create simple example programs
############################################################
foreach(src ${SIMPLE_SOURCES})
fl_create_example(${src} ${src}.cxx fltk::fltk)
endforeach(src)
############################################################
# create FLUID example programs
############################################################
foreach(src ${FLUID_SOURCES})
fl_create_example(${src} ${src}.fl fltk::fltk)
endforeach(src)
############################################################
# create example programs with fltk_images library
############################################################
foreach(src ${IMAGE_SOURCES})
fl_create_example(${src} ${src}.cxx "fltk::images")
endforeach(src)
############################################################
# create example programs requiring cairo
############################################################
if(FLTK_HAVE_CAIRO)
set(cairo_libs "fltk::fltk;cairo")
else()
set(cairo_libs "fltk::fltk")
endif()
foreach(src ${CAIRO_SOURCES})
fl_create_example(${src} ${src}.cxx "${cairo_libs}")
endforeach(src)
############################################################
# create example programs with OpenGL + libGLEW
############################################################
# Note: macOS does not need libGLEW
if(APPLE AND NOT FLTK_BACKEND_X11)
if(NOT LIB_GLEW)
set(LIB_GLEW TRUE)
endif()
set(REQUIRED_LIBS fltk::gl)
else()
set(REQUIRED_LIBS fltk::gl ${LIB_GLEW})
endif()
if(OPENGL_FOUND AND LIB_GLEW)
foreach(tgt ${OPENGL_SOURCES})
fl_create_example(${tgt} ${tgt}.cxx "${REQUIRED_LIBS}")
set_property(TARGET ${tgt} PROPERTY CXX_STANDARD 11)
set_property(TARGET ${tgt} PROPERTY CXX_STANDARD_REQUIRED TRUE)
endforeach(tgt)
else()
message(STATUS
"OpenGL or libGLEW not present: OpenGL example programs will not be built.")
fl_debug_var(OPENGL_FOUND)
fl_debug_var(LIB_GLEW)
message("")
endif(OPENGL_FOUND AND LIB_GLEW)
unset(REQUIRED_LIBS)