mirror of
https://github.com/raysan5/raylib.git
synced 2025-12-25 15:48:57 +00:00
* Documenting the compiler flags * Moved some android compiler flags and added documentation on them too. * Some more restructuring. Removed unnecessary comments that were self described by the code. Added some more explanations around certain parts of CMake and especially around compiler flags.
123 lines
3.7 KiB
CMake
123 lines
3.7 KiB
CMake
# Setup the project and settings
|
|
project(raylib C)
|
|
set(PROJECT_VERSION 3.5.0)
|
|
set(API_VERSION 351)
|
|
|
|
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
|
|
physac.h
|
|
raymath.h
|
|
raudio.h
|
|
)
|
|
|
|
# Sources to be compiled
|
|
set(raylib_sources
|
|
core.c
|
|
models.c
|
|
shapes.c
|
|
text.c
|
|
textures.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()
|