sparkle/CMakeLists.txt

84 lines
2.5 KiB
CMake
Raw Normal View History

2025-01-31 13:04:37 +05:00
cmake_minimum_required(VERSION 3.16)
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-30 23:05:59 +05:00
#include(GoogleTest)
2025-01-18 05:42:08 +05:00
2025-01-30 23:05:59 +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-30 23:05:59 +05:00
#set(TESTS ${CMAKE_SOURCE_DIR}/tests)
2025-01-31 13:04:37 +05:00
set(ADDITIONAL_CXX_FLAGS_DEBUG "-march=native -O0 -pipe -Wall -Wextra -Wpedantic -Wconversion -Wuninitialized -Wsign-conversion -Wshadow -fsanitize=address") #-Werror
2025-01-30 23:05:59 +05:00
set(ADDITIONAL_CXX_FLAGS_RELEASE "-march=native -O2 -pipe -Wall -Wextra -Wpedantic -Wconversion -Wuninitialized -Wsign-conversion -Wshadow -flto=full")
2025-01-30 17:21:08 +05:00
2025-01-31 13:04:37 +05:00
file(GLOB NETWORK_SOURCES libs/network/*.cpp)
find_package(CURL REQUIRED)
find_path(IXWEBSOCKET_INCLUDE_DIR ixwebsocket)
find_library(IXWEBSOCKET_LIBRARIES ixwebsocket)
2025-01-30 17:21:08 +05:00
if(CMAKE_BUILD_TYPE)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_definitions(-DDEBUG)
set(CMAKE_CXX_FLAGS_DEBUG "${ADDITIONAL_CXX_FLAGS_DEBUG}")
message(STATUS "cflags: ${CMAKE_CXX_FLAGS_DEBUG}")
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
add_definitions(-DRELEASE)
set(CMAKE_CXX_FLAGS_RELEASE "${ADDITIONAL_CXX_FLAGS_RELEASE}")
message(STATUS "cflags: ${CMAKE_CXX_FLAGS_RELEASE}")
endif()
2025-01-30 23:05:59 +05:00
elseif(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type" FORCE)
set(CMAKE_CXX_FLAGS_RELEASE "${ADDITIONAL_CXX_FLAGS_RELEASE}")
message(STATUS "cflags: ${CMAKE_CXX_FLAGS_RELEASE}")
2025-01-30 17:21:08 +05:00
endif()
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-27 17:24:33 +05:00
message(STATUS "Current compiler: ${CMAKE_CXX_COMPILER}")
2025-01-30 17:21:08 +05:00
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
2025-01-20 17:08:23 +05:00
2025-01-31 13:04:37 +05:00
add_executable(${PROJECT_NAME} ${SOURCE} ${NETWORK_SOURCES})
target_precompile_headers(${PROJECT_NAME} PRIVATE ${INCLUDE}pch.hpp)
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-30 23:05:59 +05:00
#add_library(sparkles STATIC ${SOURCE})
#add_executable(tests ${TESTS}/tests.cpp)
#enable_testing()
#add_test(NAME NetworkManagerTest COMMAND tests)
2025-01-29 16:06:47 +05:00
#target_include_directories(tests PRIVATE
# ${LIBS}
# ${INCLUDE}
# ${IXWEBSOCKET_INCLUDE_DIR}
# ${CURL_INCLUDE_DIRS}
#)
#target_link_libraries(tests gtest
# ${IXWEBSOCKET_LIBRARIES}
# ${CURL_LIBRARIES}
# gtest_main
#)