92 lines
2.8 KiB
CMake
Executable File
92 lines
2.8 KiB
CMake
Executable File
cmake_minimum_required(VERSION 3.24)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
set(PROJECT_NAME panda-core)
|
|
set(PROJECT_VERSION 1.0)
|
|
|
|
project(${PROJECT_NAME} VERSION ${PROJECT_VERSION})
|
|
|
|
##############################################################
|
|
option(PANDA_INCLUDE_IMGUI "include imgui" ON)
|
|
|
|
### Fallback link
|
|
if(NOT RAYLIB_LINK)
|
|
set(RAYLIB_LINK "https://github.com/raysan5/raylib/archive/refs/tags/5.5.tar.gz")
|
|
endif()
|
|
|
|
if(NOT RAYLIB_EXTRA_LINK)
|
|
set(RAYLIB_EXTRA_LINK "https://github.com/raylib-extras/extras-cpp/archive/refs/heads/main.zip")
|
|
endif()
|
|
|
|
if(NOT IMGUI_LINK)
|
|
set(IMGUI_LINK "https://github.com/ocornut/imgui/archive/refs/heads/docking.zip")
|
|
endif()
|
|
|
|
if(NOT RLIMGUI_LINK)
|
|
set(RLIMGUI_LINK "https://github.com/raylib-extras/rlImGui/archive/refs/heads/main.zip")
|
|
endif()
|
|
|
|
##############################################################
|
|
include(FetchContent)
|
|
|
|
message(STATUS "Downloading raylib library")
|
|
set(BUILD_EXAMPLES OFF CACHE BOOL "" FORCE)
|
|
FetchContent_Declare(raylib URL ${RAYLIB_LINK})
|
|
FetchContent_MakeAvailable(raylib)
|
|
|
|
message(STATUS "Downloading raylib extra library")
|
|
FetchContent_Declare(raylib-extra URL ${RAYLIB_EXTRA_LINK})
|
|
FetchContent_MakeAvailable(raylib-extra)
|
|
|
|
##############################################################
|
|
# yes... im using glob... dont judge me....
|
|
file(GLOB_RECURSE PROJECT_SOURCES CONFIGURE_DEPENDS "src/*.cpp")
|
|
|
|
set(PROJECT_INCLUDE
|
|
"src"
|
|
"${inifile-cpp_SOURCE_DIR}/include"
|
|
"${raylib-extra_SOURCE_DIR}")
|
|
|
|
set(PROJECT_LIBRARY raylib)
|
|
|
|
set(PROJECT_DEFINITION
|
|
"_PANDA_CORE_"
|
|
NO_FONT_AWESOME)
|
|
|
|
##############################################################
|
|
|
|
if(PANDA_INCLUDE_IMGUI)
|
|
set(PROJECT_DEFINITION ${PROJECT_DEFINITION} PANDA_INCLUDE_IMGUI)
|
|
|
|
message(STATUS "Downloading imgui library")
|
|
FetchContent_Declare(imgui URL ${IMGUI_LINK})
|
|
FetchContent_MakeAvailable(imgui)
|
|
|
|
message(STATUS "Downloading rlImGui library")
|
|
FetchContent_Declare(rlimgui URL ${RLIMGUI_LINK})
|
|
FetchContent_MakeAvailable(rlimgui)
|
|
|
|
file(GLOB IMGUI_SOURCES CONFIGURE_DEPENDS
|
|
"${imgui_SOURCE_DIR}/*.cpp"
|
|
"${imgui_SOURCE_DIR}/misc/cpp/*.cpp"
|
|
"${rlimgui_SOURCE_DIR}/*.cpp")
|
|
|
|
set (PROJECT_SOURCES ${PROJECT_SOURCES} ${IMGUI_SOURCES})
|
|
|
|
set(PROJECT_INCLUDE
|
|
${PROJECT_INCLUDE}
|
|
${imgui_SOURCE_DIR}
|
|
${imgui_SOURCE_DIR}/backends
|
|
${rlimgui_SOURCE_DIR})
|
|
endif()
|
|
|
|
##############################################################
|
|
|
|
add_library(${PROJECT_NAME} STATIC ${PROJECT_SOURCES})
|
|
target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_INCLUDE})
|
|
target_link_libraries(${PROJECT_NAME} PUBLIC ${PROJECT_LIBRARY})
|
|
target_compile_definitions(${PROJECT_NAME} PUBLIC ${PROJECT_DEFINITION})
|
|
target_compile_options(${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic) |