cmake_minimum_required(VERSION 3.10) project(sparkle) include(GoogleTest) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED True) set(SOURCE sources/main.cpp) set(LIBS ${CMAKE_SOURCE_DIR}/libs/) set(INCLUDE ${CMAKE_SOURCE_DIR}/include/) set(TESTS ${CMAKE_SOURCE_DIR}/tests) set(ADDITIONAL_CXX_FLAGS_DEBUG "-pipe -Wall -Wextra -O0 -fsanitize=address") set(ADDITIONAL_CXX_FLAGS_RELEASE "-march=native -pipe -Wall -Wextra -O2 -flto") find_package(CURL REQUIRED) find_path(IXWEBSOCKET_INCLUDE_DIR ixwebsocket) find_library(IXWEBSOCKET_LIBRARIES ixwebsocket) message(STATUS "Current compiler: ${CMAKE_CXX_COMPILER}") if(NOT IXWEBSOCKET_INCLUDE_DIR OR NOT IXWEBSOCKET_LIBRARIES) message(FATAL_ERROR "ixwebsocket not found") endif() if(NOT CURL_INCLUDE_DIRS OR NOT CURL_LIBRARIES) message(FATAL_ERROR "curl not found") endif() 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") set(CMAKE_CXX_FLAGS "${ADDITIONAL_CXX_FLAGS_DEBUG}") add_definitions(-DDEBUG) elseif(CMAKE_BUILD_TYPE STREQUAL "Release") add_definitions(-DRELEASE) set(CMAKE_CXX_FLAGS "${ADDITIONAL_CXX_FLAGS_RELEASE}") endif() endif() message(STATUS "${CMAKE_BUILD_TYPE}") add_executable(${PROJECT_NAME} ${SOURCE}) #add_library(sparkles STATIC ${SOURCE}) add_executable(tests ${TESTS}/tests.cpp) enable_testing() add_test(NAME NetworkManagerTest COMMAND tests) target_include_directories(${PROJECT_NAME} PRIVATE ${LIBS} ${INCLUDE} ${IXWEBSOCKET_INCLUDE_DIR} ${CURL_INCLUDE_DIRS} ) target_link_libraries(${PROJECT_NAME} PRIVATE ${IXWEBSOCKET_LIBRARIES} ${CURL_LIBRARIES} ) target_include_directories(tests PRIVATE ${LIBS} ${INCLUDE} ${IXWEBSOCKET_INCLUDE_DIR} ${CURL_INCLUDE_DIRS} ) target_link_libraries(tests gtest ${IXWEBSOCKET_LIBRARIES} ${CURL_LIBRARIES} gtest_main )