mirror of
https://github.com/ApfelTeeSaft/WV-Networking.git
synced 2026-08-26 19:43:26 +00:00
69 lines
1.6 KiB
CMake
69 lines
1.6 KiB
CMake
cmake_minimum_required(VERSION 3.24)
|
|
project(WVNet LANGUAGES CXX)
|
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
# Add GLM dependency (shared with WVCore)
|
|
include(FetchContent)
|
|
if(NOT TARGET glm)
|
|
FetchContent_Declare(GLM
|
|
GIT_REPOSITORY https://github.com/g-truc/glm.git
|
|
GIT_TAG 1.0.1
|
|
GIT_SHALLOW TRUE
|
|
)
|
|
FetchContent_MakeAvailable(GLM)
|
|
endif()
|
|
|
|
# WVNet library
|
|
add_library(WVNet STATIC
|
|
# Platform
|
|
src/platform/Socket.cpp
|
|
|
|
# Core networking
|
|
src/BitStream.cpp
|
|
src/Packet.cpp
|
|
src/NetConnection.cpp
|
|
src/NetDriver.cpp
|
|
src/NetworkManager.cpp
|
|
|
|
# Actor system
|
|
src/Actor.cpp
|
|
src/World.cpp
|
|
|
|
# Replication & RPC
|
|
src/ReplicationManager.cpp
|
|
src/RPCManager.cpp
|
|
)
|
|
|
|
target_include_directories(WVNet PUBLIC
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
|
|
$<INSTALL_INTERFACE:include>
|
|
)
|
|
|
|
target_include_directories(WVNet PUBLIC ${glm_SOURCE_DIR})
|
|
|
|
target_compile_features(WVNet PUBLIC cxx_std_20)
|
|
|
|
# Platform-specific definitions and libraries
|
|
if(WIN32)
|
|
target_compile_definitions(WVNet PUBLIC PLATFORM_WINDOWS)
|
|
target_link_libraries(WVNet PRIVATE ws2_32)
|
|
elseif(APPLE)
|
|
target_compile_definitions(WVNet PUBLIC PLATFORM_MACOS PLATFORM_UNIX)
|
|
elseif(UNIX)
|
|
target_compile_definitions(WVNet PUBLIC PLATFORM_LINUX PLATFORM_UNIX)
|
|
endif()
|
|
|
|
# Optional: Build samples
|
|
option(WVNET_BUILD_SAMPLES "Build WVNet samples" ON)
|
|
if(WVNET_BUILD_SAMPLES)
|
|
add_subdirectory(samples)
|
|
endif()
|
|
|
|
# Optional: Build tests
|
|
option(WVNET_BUILD_TESTS "Build WVNet tests" OFF)
|
|
if(WVNET_BUILD_TESTS)
|
|
add_subdirectory(tests)
|
|
endif()
|