cmake_minimum_required(VERSION 3.25) project(SimianProject) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # ------------------------- # 1️⃣ Raylib (submodule) # ------------------------- add_subdirectory(external/raylib) # ------------------------- # 2️⃣ AngelScript (submodule) # ------------------------- add_subdirectory(external/angelscript/sdk/angelscript/projects/cmake) # ------------------------- # 3️⃣ scriptstdstring add-on # ------------------------- add_library(scriptstdstring STATIC external/angelscript/sdk/add_on/scriptstdstring/scriptstdstring.cpp ) target_include_directories(scriptstdstring PUBLIC external/angelscript/sdk/angelscript/include ) # ------------------------ # debugger add-on # ------------------------ add_library(debugger STATIC external/angelscript/sdk/add_on/debugger/debugger.cpp ) target_include_directories(debugger PUBLIC external/angelscript/sdk/angelscript/include ) # ------------------------- # scriptbuilder add-on # ------------------------- add_library(scriptbuilder STATIC external/angelscript/sdk/add_on/scriptbuilder/scriptbuilder.cpp ) target_include_directories(scriptbuilder PUBLIC external/angelscript/sdk/angelscript/include ) # ------------------------- # Main executable # ------------------------- add_executable(simian main.cpp src/Application.cpp src/ScriptEngine.cpp src/ScriptBindings.cpp src/HotReload.cpp src/log/log.c ) target_include_directories(simian PUBLIC include src/log external/raylib/src external/angelscript/sdk/angelscript/include external/angelscript/sdk/add_on/scriptstdstring external/angelscript/sdk/add_on/scriptbuilder external/angelscript/sdk/add_on/debugger ) target_link_libraries(simian raylib angelscript scriptstdstring scriptbuilder debugger ) # ------------------------- # 5️⃣ Platform-specific linking # ------------------------- if(WIN32) target_link_libraries(simian winmm gdi32) elseif(UNIX) # Linux / macOS: Raylib handles system libs automatically endif() # ------------------------- # 6️⃣ Optional: Compile flags # ------------------------- if(MSVC) target_compile_options(simian PRIVATE /W4 /EHsc) else() target_compile_options(simian PRIVATE -Wall -Wextra -pedantic) endif() # -------------------------