Build specific example using -DBUILD_EXAMPLE cmake flag (#3921)

This commit is contained in:
Benji 2024-04-17 13:26:18 -04:00 committed by GitHub
parent 112ce672e1
commit c1fd98591d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 22 additions and 4 deletions

View file

@ -59,7 +59,10 @@ if(NOT TARGET uninstall)
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif() endif()
if (${BUILD_EXAMPLES}) if (NOT ${BUILD_EXAMPLE} STREQUAL "")
MESSAGE(STATUS "Building example '${BUILD_EXAMPLE}'")
add_subdirectory(examples)
elseif (${BUILD_EXAMPLES})
MESSAGE(STATUS "Building examples is enabled") MESSAGE(STATUS "Building examples is enabled")
add_subdirectory(examples) add_subdirectory(examples)
endif() endif()

View file

@ -8,6 +8,7 @@ enum_option(OPENGL_VERSION "OFF;4.3;3.3;2.1;1.1;ES 2.0;ES 3.0" "Force a specific
# Configuration options # Configuration options
option(BUILD_EXAMPLES "Build the examples." ${RAYLIB_IS_MAIN}) option(BUILD_EXAMPLES "Build the examples." ${RAYLIB_IS_MAIN})
option(BUILD_EXAMPLE "Build a specific example by filename." "")
option(CUSTOMIZE_BUILD "Show options for customizing your Raylib library build." OFF) option(CUSTOMIZE_BUILD "Show options for customizing your Raylib library build." OFF)
option(ENABLE_ASAN "Enable AddressSanitizer (ASAN) for debugging (degrades performance)" OFF) option(ENABLE_ASAN "Enable AddressSanitizer (ASAN) for debugging (degrades performance)" OFF)
option(ENABLE_UBSAN "Enable UndefinedBehaviorSanitizer (UBSan) for debugging" OFF) option(ENABLE_UBSAN "Enable UndefinedBehaviorSanitizer (UBSan) for debugging" OFF)

View file

@ -48,10 +48,24 @@ endif ()
# into a CMake variable # into a CMake variable
set(example_sources) set(example_sources)
set(example_resources) set(example_resources)
set(example_found FALSE)
foreach (example_dir ${example_dirs}) foreach (example_dir ${example_dirs})
if (BUILD_EXAMPLE)
if (NOT example_found)
file(GLOB sources ${example_dir}/${BUILD_EXAMPLE}.c)
if (EXISTS ${sources})
list(APPEND example_sources ${sources})
set(example_found TRUE)
message("Raylib example '${BUILD_EXAMPLE}.c' found in ${example_dir}!")
else()
message("Raylib example '${BUILD_EXAMPLE}.c' not found in ${example_dir}...")
endif()
endif()
else()
# Get the .c files # Get the .c files
file(GLOB sources ${example_dir}/*.c) file(GLOB sources ${example_dir}/*.c)
list(APPEND example_sources ${sources}) list(APPEND example_sources ${sources})
endif()
# Any any resources # Any any resources
file(GLOB resources ${example_dir}/resources/*) file(GLOB resources ${example_dir}/resources/*)