Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 30 additions & 18 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,24 +1,36 @@
cmake_minimum_required(VERSION 3.0.0)
project(nodepp VERSION 1.3.0)
cmake_minimum_required(VERSION 3.10)
project(Nodepp_Examples)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(NODEPP_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include")

# Search for ZLIB
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)

find_package(Threads REQUIRED)
find_package(OpenSSL REQUIRED)
find_package(ZLIB REQUIRED)
if(NOT ZLIB_FOUND)
message(FATAL_ERROR "ZLIB not found. Please install libz-dev or equivalent files.")
endif()

# Search for OpenSSL
find_package(OpenSSL REQUIRED COMPONENTS Crypto SSL)
if(NOT OpenSSL_FOUND)
message(FATAL_ERROR "OpenSSL not found. Please install libopenssl-dev or equivalent files.")
endif()
# 1. Discover all examples
file(GLOB EXAMPLE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/examples/*.cpp")

# 2. EXCLUDE the failing 3-Conio.cpp example
# This removes any entry from the list that contains "3-Conio"
list(FILTER EXAMPLE_FILES EXCLUDE REGEX "3-Conio|WSS|WS-load-test|57-mutex")

# 3. Process the remaining examples
foreach(SOURCE_FILE ${EXAMPLE_FILES})
get_filename_component(EXE_NAME ${SOURCE_FILE} NAME_WE)

add_executable(${EXE_NAME} ${SOURCE_FILE})

target_compile_options(${EXE_NAME} PRIVATE -fpermissive)

target_link_libraries(${EXE_NAME} PRIVATE
Threads::Threads
OpenSSL::SSL
OpenSSL::Crypto
ZLIB::ZLIB
)
endforeach()

# interface-target
add_library(nodepp INTERFACE)
target_include_directories(nodepp INTERFACE ${NODEPP_INCLUDE_DIR})
target_link_libraries(nodepp INTERFACE -lssl -lcrypto -lz $<$<OR:$<BOOL:${MSVC}>,$<STREQUAL:${CMAKE_SYSTEM_NAME},Windows>>:ws2_32> )