# 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 ) # /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 $ INTERFACE $ ) 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 $ $ 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()