cmake_minimum_required(VERSION 3.12) project(game CXX) file(GLOB_RECURSE sources src/*.cpp src/*.h ) # Add the src directory to the include path include_directories(src) add_executable(${PROJECT_NAME} ${sources}) # Set the default log level based on the build type if(CMAKE_BUILD_TYPE STREQUAL "Debug") message(STATUS "This is a debug build. Log level will be set to 'trace' for target '${PROJECT_NAME}'.") target_compile_definitions(${PROJECT_NAME} PRIVATE SPDLOG_ACTIVE_LEVEL=SPDLOG_LEVEL_TRACE) endif() # Treat char variables as signed, especially useful for ARM builds target_compile_options(${PROJECT_NAME} PUBLIC -fsigned-char) # Find and link dependencies # # vcpkg dependencies # # PostgreSQL with libpqxx (stable vcpkg package) find_package(PostgreSQL REQUIRED) find_package(libpqxx CONFIG REQUIRED) target_link_libraries(${PROJECT_NAME} PRIVATE libpqxx::pqxx) # Argon2 find_package(unofficial-argon2 CONFIG REQUIRED) target_link_libraries(${PROJECT_NAME} PRIVATE unofficial::argon2::libargon2) # Crypto++ find_package(cryptopp CONFIG REQUIRED) target_link_libraries(${PROJECT_NAME} PRIVATE cryptopp::cryptopp) # Libevent find_package(Libevent CONFIG REQUIRED) target_link_libraries(${PROJECT_NAME} PRIVATE libevent::core libevent::extra libevent::pthreads) # LZO find_package(LZO REQUIRED) if (LZO_FOUND) include_directories(${LZO_INCLUDE_DIR}) target_link_libraries(${PROJECT_NAME} PRIVATE ${LZO_LIBRARIES}) endif (LZO_FOUND) # effolkronium/random find_package(effolkronium_random CONFIG REQUIRED) target_link_libraries(${PROJECT_NAME} PRIVATE effolkronium_random) # # System-provided dependencies # # DevIL find_package(DevIL REQUIRED) include_directories(${IL_INCLUDE_DIR}) target_link_libraries(${PROJECT_NAME} PRIVATE ${IL_LIBRARIES}) # Pthreads set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) target_link_libraries(${PROJECT_NAME} PRIVATE Threads::Threads) # LibBSD target_link_libraries(${PROJECT_NAME} PRIVATE bsd) # # Project-provided dependencies # target_link_libraries(${PROJECT_NAME} PRIVATE libgame libpoly libsql libthecore liblua)