mirror of
https://github.com/raysan5/raylib.git
synced 2025-12-25 10:22:33 -05:00
raylib modules have been slightly renamed to add some identity and note that they are independent modules that can be used as standalone separate parts of raylib if required. The renamed modules are: - `core` -> `rcore` - `shapes` -> `rshapes` - `textures` -> `rtextures` - `text` -> `rtext` - `models` -> `rmodels` - `camera` -> `rcamera` - `gestures` -> `rgestures` - `core` -> `rcore` All the build systems has been adapted to this change.
122 lines
3.7 KiB
CMake
122 lines
3.7 KiB
CMake
# Setup the project and settings
|
|
project(raylib C)
|
|
set(PROJECT_VERSION 3.7.0)
|
|
set(API_VERSION 370)
|
|
|
|
include(GNUInstallDirs)
|
|
include(JoinPaths)
|
|
|
|
# Sets build type if not set by now
|
|
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
|
if(RAYLIB_IS_MAIN)
|
|
set(default_build_type Debug)
|
|
else()
|
|
message(WARNING "Default build type is not set (CMAKE_BUILD_TYPE)")
|
|
endif()
|
|
|
|
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
|
|
|
|
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Choose the type of build." FORCE)
|
|
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
|
|
endif()
|
|
|
|
# Used as public API to be included into other projects
|
|
set(raylib_public_headers
|
|
raylib.h
|
|
rlgl.h
|
|
raymath.h
|
|
raudio.h
|
|
)
|
|
|
|
# Sources to be compiled
|
|
set(raylib_sources
|
|
rcore.c
|
|
rmodels.c
|
|
rshapes.c
|
|
rtext.c
|
|
rtextures.c
|
|
utils.c
|
|
)
|
|
|
|
# <root>/cmake/GlfwImport.cmake handles the details around the inclusion of glfw
|
|
include(GlfwImport)
|
|
|
|
|
|
if (USE_AUDIO)
|
|
MESSAGE(STATUS "Audio Backend: miniaudio")
|
|
list(APPEND raylib_sources raudio.c)
|
|
else ()
|
|
MESSAGE(STATUS "Audio Backend: None (-DUSE_AUDIO=OFF)")
|
|
endif ()
|
|
|
|
# Sets additional platform options and link libraries for each platform
|
|
# also selects the proper graphics API and version for that platform
|
|
# Produces a variable LIBS_PRIVATE that will be used later
|
|
include(LibraryConfigurations)
|
|
|
|
add_library(raylib ${raylib_sources} ${raylib_public_headers})
|
|
|
|
if (NOT BUILD_SHARED_LIBS)
|
|
MESSAGE(STATUS "Building raylib static library")
|
|
add_library(raylib_static ALIAS raylib)
|
|
else()
|
|
MESSAGE(STATUS "Building raylib shared library")
|
|
if (MSVC)
|
|
target_compile_definitions(raylib
|
|
PRIVATE $<BUILD_INTERFACE:BUILD_LIBTYPE_SHARED>
|
|
INTERFACE $<INSTALL_INTERFACE:USE_LIBTYPE_SHARED>
|
|
)
|
|
endif ()
|
|
endif()
|
|
|
|
set_target_properties(raylib PROPERTIES
|
|
PUBLIC_HEADER "${raylib_public_headers}"
|
|
VERSION ${PROJECT_VERSION}
|
|
SOVERSION ${API_VERSION}
|
|
)
|
|
|
|
if (WITH_PIC OR BUILD_SHARED_LIBS)
|
|
set_property(TARGET raylib PROPERTY POSITION_INDEPENDENT_CODE ON)
|
|
endif ()
|
|
|
|
target_link_libraries(raylib "${LIBS_PRIVATE}")
|
|
|
|
# Sets some compile time definitions for the pre-processor
|
|
# If CUSTOMIZE_BUILD option is on you will not use config.h by default
|
|
# and you will be able to select more build options
|
|
include(CompileDefinitions)
|
|
|
|
# Registering include directories
|
|
target_include_directories(raylib
|
|
PUBLIC
|
|
$<INSTALL_INTERFACE:include>
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
|
PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
${OPENGL_INCLUDE_DIR}
|
|
${OPENAL_INCLUDE_DIR}
|
|
)
|
|
|
|
# Copy the header files to the build directory for convenience
|
|
file(COPY ${raylib_public_headers} DESTINATION "include")
|
|
|
|
# Includes information on how the library will be installed on the system
|
|
# when cmake --install is run
|
|
include(InstallConfigurations)
|
|
|
|
# Print the flags for the user
|
|
if (DEFINED CMAKE_BUILD_TYPE)
|
|
message(STATUS "Generated build type: ${CMAKE_BUILD_TYPE}")
|
|
else ()
|
|
message(STATUS "Generated config types: ${CMAKE_CONFIGURATION_TYPES}")
|
|
endif ()
|
|
|
|
message(STATUS "Compiling with the flags:")
|
|
message(STATUS " PLATFORM=" ${PLATFORM_CPP})
|
|
message(STATUS " GRAPHICS=" ${GRAPHICS})
|
|
|
|
# Options if you want to create an installer using CPack
|
|
include(PackConfigurations)
|
|
|
|
enable_testing()
|