cmake_minimum_required(VERSION 3.10) project(sparkle) #target_precompile_headers(${PROJECT_NAME} PRIVATE pch.h) #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) #-Werror set(ADDITIONAL_CXX_FLAGS_DEBUG "-march=native -O0 -pipe -Wall -Wextra -Wpedantic -Wconversion -Wuninitialized -Wsign-conversion -Wshadow -fsanitize=address") set(ADDITIONAL_CXX_FLAGS_RELEASE "-march=native -O2 -pipe -Wall -Wextra -Wpedantic -Wconversion -Wuninitialized -Wsign-conversion -Wshadow -flto=full") 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() 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}") endif() file(GLOB NETWORK_SOURCES libs/network/*.cpp) file(GLOB WEBSOCKET_SOURCES libs/gateway/*.cpp) find_package(CURL REQUIRED) find_path(IXWEBSOCKET_INCLUDE_DIR ixwebsocket) find_library(IXWEBSOCKET_LIBRARIES ixwebsocket) 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() message(STATUS "Current compiler: ${CMAKE_CXX_COMPILER}") message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") add_executable(${PROJECT_NAME} ${SOURCE} ${NETWORK_SOURCES} ${WEBSOCKET_SOURCES}) target_include_directories(${PROJECT_NAME} PRIVATE ${LIBS} ${INCLUDE} ${IXWEBSOCKET_INCLUDE_DIR} ${CURL_INCLUDE_DIRS} ) target_link_libraries(${PROJECT_NAME} PRIVATE ${IXWEBSOCKET_LIBRARIES} ${CURL_LIBRARIES} ) #add_library(sparkles STATIC ${SOURCE}) #add_executable(tests ${TESTS}/tests.cpp) #enable_testing() #add_test(NAME NetworkManagerTest COMMAND tests) #target_include_directories(tests PRIVATE # ${LIBS} # ${INCLUDE} # ${IXWEBSOCKET_INCLUDE_DIR} # ${CURL_INCLUDE_DIRS} #) #target_link_libraries(tests gtest # ${IXWEBSOCKET_LIBRARIES} # ${CURL_LIBRARIES} # gtest_main #)