2024-12-31 02:20:56 +05:00
|
|
|
cmake_minimum_required(VERSION 3.10)
|
2025-01-14 23:06:29 +05:00
|
|
|
|
2024-12-31 02:20:56 +05:00
|
|
|
project(sparkle)
|
2025-01-14 23:06:29 +05:00
|
|
|
|
2025-01-18 05:42:08 +05:00
|
|
|
include(GoogleTest)
|
|
|
|
|
2025-01-25 14:21:16 +05:00
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
2025-01-20 17:08:23 +05:00
|
|
|
set(CMAKE_CXX_STANDARD 20)
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
2025-01-14 23:06:29 +05:00
|
|
|
set(SOURCE sources/main.cpp)
|
|
|
|
set(LIBS ${CMAKE_SOURCE_DIR}/libs/)
|
2025-01-15 13:35:34 +05:00
|
|
|
set(INCLUDE ${CMAKE_SOURCE_DIR}/include/)
|
2025-01-19 23:39:20 +05:00
|
|
|
set(TESTS ${CMAKE_SOURCE_DIR}/tests)
|
2025-01-25 12:23:31 +05:00
|
|
|
set(ADDITIONAL_CXX_FLAGS_DEBUG "-pipe -Wall -Wextra -O0 -fsanitize=address")
|
2025-01-25 12:52:32 +05:00
|
|
|
set(ADDITIONAL_CXX_FLAGS_RELEASE "-march=native -pipe -Wall -Wextra -O2 -flto")
|
2025-01-14 23:06:29 +05:00
|
|
|
|
2025-01-18 04:37:54 +05:00
|
|
|
find_package(CURL REQUIRED)
|
2024-12-31 02:20:56 +05:00
|
|
|
find_path(IXWEBSOCKET_INCLUDE_DIR ixwebsocket)
|
2025-01-14 23:06:29 +05:00
|
|
|
find_library(IXWEBSOCKET_LIBRARIES ixwebsocket)
|
2025-01-20 16:50:41 +05:00
|
|
|
|
|
|
|
message(STATUS "Current compiler: ${CMAKE_CXX_COMPILER}")
|
2025-01-14 23:06:29 +05:00
|
|
|
|
|
|
|
if(NOT IXWEBSOCKET_INCLUDE_DIR OR NOT IXWEBSOCKET_LIBRARIES)
|
2024-12-31 02:20:56 +05:00
|
|
|
message(FATAL_ERROR "ixwebsocket not found")
|
|
|
|
endif()
|
2025-01-14 23:06:29 +05:00
|
|
|
|
2025-01-18 04:37:54 +05:00
|
|
|
if(NOT CURL_INCLUDE_DIRS OR NOT CURL_LIBRARIES)
|
2025-01-18 05:42:08 +05:00
|
|
|
message(FATAL_ERROR "curl not found")
|
2025-01-14 23:06:29 +05:00
|
|
|
endif()
|
|
|
|
|
2025-01-20 17:08:23 +05:00
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
|
|
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type" FORCE)
|
|
|
|
endif()
|
|
|
|
|
|
|
|
if(CMAKE_BUILD_TYPE)
|
|
|
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
2025-01-25 12:23:31 +05:00
|
|
|
set(CMAKE_CXX_FLAGS "${ADDITIONAL_CXX_FLAGS_DEBUG}")
|
2025-01-20 17:08:23 +05:00
|
|
|
add_definitions(-DDEBUG)
|
|
|
|
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
|
|
|
add_definitions(-DRELEASE)
|
2025-01-25 12:23:31 +05:00
|
|
|
set(CMAKE_CXX_FLAGS "${ADDITIONAL_CXX_FLAGS_RELEASE}")
|
2025-01-20 17:08:23 +05:00
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
|
|
|
message(STATUS "${CMAKE_BUILD_TYPE}")
|
|
|
|
|
2025-01-14 23:06:29 +05:00
|
|
|
add_executable(${PROJECT_NAME} ${SOURCE})
|
2025-01-18 05:42:08 +05:00
|
|
|
#add_library(sparkles STATIC ${SOURCE})
|
2025-01-25 11:24:56 +05:00
|
|
|
add_executable(tests ${TESTS}/tests.cpp)
|
2025-01-18 05:42:08 +05:00
|
|
|
|
2025-01-25 11:24:56 +05:00
|
|
|
enable_testing()
|
2025-01-18 05:42:08 +05:00
|
|
|
|
2025-01-25 11:24:56 +05:00
|
|
|
add_test(NAME NetworkManagerTest COMMAND tests)
|
2025-01-14 23:06:29 +05:00
|
|
|
|
|
|
|
target_include_directories(${PROJECT_NAME} PRIVATE
|
|
|
|
${LIBS}
|
2025-01-15 13:35:34 +05:00
|
|
|
${INCLUDE}
|
2024-12-31 02:20:56 +05:00
|
|
|
${IXWEBSOCKET_INCLUDE_DIR}
|
2025-01-18 04:37:54 +05:00
|
|
|
${CURL_INCLUDE_DIRS}
|
2024-12-31 02:20:56 +05:00
|
|
|
)
|
2025-01-14 23:06:29 +05:00
|
|
|
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
|
|
|
${IXWEBSOCKET_LIBRARIES}
|
2025-01-18 04:37:54 +05:00
|
|
|
${CURL_LIBRARIES}
|
2024-12-31 02:20:56 +05:00
|
|
|
)
|
2025-01-14 23:06:29 +05:00
|
|
|
|
2025-01-25 11:24:56 +05:00
|
|
|
target_include_directories(tests PRIVATE
|
|
|
|
${LIBS}
|
|
|
|
${INCLUDE}
|
|
|
|
${IXWEBSOCKET_INCLUDE_DIR}
|
|
|
|
${CURL_INCLUDE_DIRS}
|
|
|
|
)
|
2025-01-19 23:39:20 +05:00
|
|
|
|
2025-01-25 11:24:56 +05:00
|
|
|
target_link_libraries(tests gtest
|
|
|
|
${IXWEBSOCKET_LIBRARIES}
|
|
|
|
${CURL_LIBRARIES}
|
|
|
|
gtest_main
|
|
|
|
)
|