Skip to content

Commit 8285b8a

Browse files
committed
feat: add cmake build
1 parent 5222acd commit 8285b8a

2 files changed

Lines changed: 63 additions & 0 deletions

File tree

CMakeLists.txt

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
cmake_minimum_required(VERSION 3.10)
2+
project(PSN VERSION 2.03 LANGUAGES CXX)
3+
4+
# Set C++ standard
5+
set(CMAKE_CXX_STANDARD 11)
6+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
7+
8+
# Create header-only library interface
9+
add_library(psn INTERFACE)
10+
11+
# Add include directory
12+
target_include_directories(psn INTERFACE
13+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
14+
$<INSTALL_INTERFACE:include>
15+
)
16+
17+
# Platform-specific settings for network library
18+
if(WIN32)
19+
target_link_libraries(psn INTERFACE ws2_32)
20+
endif()
21+
22+
# Add examples
23+
add_subdirectory(examples)

examples/CMakeLists.txt

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# PSN Examples CMakeLists.txt
2+
3+
# psn_server executable
4+
add_executable(psn_server
5+
vs2015/psn_server/psn_server.cpp
6+
)
7+
8+
target_link_libraries(psn_server PRIVATE psn)
9+
10+
# psn_client executable
11+
add_executable(psn_client
12+
vs2015/psn_client/psn_client.cpp
13+
)
14+
15+
target_link_libraries(psn_client PRIVATE psn)
16+
17+
# psn_glut_client executable (optional - requires GLUT and OpenGL)
18+
find_package(OpenGL)
19+
find_package(GLUT)
20+
21+
if(OpenGL_FOUND AND GLUT_FOUND)
22+
add_executable(psn_glut_client
23+
vs2015/psn_glut_client/psn_glut_client.cpp
24+
)
25+
26+
target_link_libraries(psn_glut_client PRIVATE psn OpenGL::GL GLUT::GLUT)
27+
target_include_directories(psn_glut_client PRIVATE ${OPENGL_INCLUDE_DIR} ${GLUT_INCLUDE_DIR})
28+
29+
# macOS specific: no need to copy DLL files
30+
# Windows would need post-build copy for glut32.dll or glut64.dll
31+
32+
message(STATUS "Building psn_glut_client (OpenGL visualizer)")
33+
else()
34+
if(NOT OpenGL_FOUND)
35+
message(WARNING "OpenGL not found - skipping psn_glut_client")
36+
endif()
37+
if(NOT GLUT_FOUND)
38+
message(WARNING "GLUT not found - skipping psn_glut_client")
39+
endif()
40+
endif()

0 commit comments

Comments
 (0)