123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- # 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()
|