0% found this document useful (0 votes)
14 views

CMakeList

This document outlines the setup and configuration for the raylib project using CMake, including versioning, build types, and source files. It specifies conditions for building static or shared libraries, platform-specific options, and includes necessary headers and libraries. Additionally, it provides instructions for installation and testing configurations.

Uploaded by

vutuongvinh.hn
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

CMakeList

This document outlines the setup and configuration for the raylib project using CMake, including versioning, build types, and source files. It specifies conditions for building static or shared libraries, platform-specific options, and includes necessary headers and libraries. Additionally, it provides instructions for installation and testing configurations.

Uploaded by

vutuongvinh.hn
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

# Setup the project and settings

project(raylib C)
set(PROJECT_VERSION 4.5.0)
set(API_VERSION 450)

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
)

# 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


if (NOT ${PLATFORM} MATCHES "Web")
include(GlfwImport)
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)

if (USE_AUDIO)
MESSAGE(STATUS "Audio Backend: miniaudio")
list(APPEND raylib_sources raudio.c)
else ()
MESSAGE(STATUS "Audio Backend: None (-DUSE_AUDIO=OFF)")
endif ()
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 (WIN32)
target_compile_definitions(raylib
PRIVATE $<BUILD_INTERFACE:BUILD_LIBTYPE_SHARED>
INTERFACE
$<INSTALL_INTERFACE:USE_LIBTYPE_SHARED>
)
endif ()
endif()

if (${PLATFORM} MATCHES "Web")


target_link_options(raylib PRIVATE "-sUSE_GLFW=3")
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()

You might also like