2023-11-03 21:05:08 +08:00
|
|
|
cmake_minimum_required(VERSION 3.12 FATAL_ERROR)
|
|
|
|
|
|
|
|
include(FetchContent)
|
|
|
|
|
|
|
|
project(password-analyzer CXX)
|
|
|
|
|
|
|
|
set(CMAKE_CXX_STANDARD 23)
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmacro-prefix-map=${CMAKE_SOURCE_DIR}=.")
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=mold -Wno-unused-command-line-argument")
|
2023-11-05 14:46:03 +08:00
|
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address,undefined")
|
2023-11-03 21:05:08 +08:00
|
|
|
|
|
|
|
message(STATUS "[DEPS] Processing spdlog")
|
|
|
|
FetchContent_Declare(
|
|
|
|
spdlog
|
|
|
|
GIT_REPOSITORY https://github.com/gabime/spdlog
|
|
|
|
GIT_TAG v1.12.0
|
|
|
|
GIT_SHALLOW TRUE
|
|
|
|
GIT_PROGRESS TRUE
|
|
|
|
OVERRIDE_FIND_PACKAGE
|
|
|
|
)
|
|
|
|
FetchContent_MakeAvailable(spdlog)
|
|
|
|
|
|
|
|
message(STATUS "[DEPS] Processing Catch2")
|
|
|
|
find_package(Catch2 3 CONFIG)
|
|
|
|
if (NOT Catch2_FOUND)
|
|
|
|
FetchContent_Declare(
|
|
|
|
Catch2
|
|
|
|
GIT_REPOSITORY https://github.com/catchorg/Catch2.git
|
|
|
|
GIT_TAG v3.4.0
|
|
|
|
GIT_SHALLOW TRUE
|
|
|
|
GIT_PROGRESS TRUE
|
|
|
|
OVERRIDE_FIND_PACKAGE
|
|
|
|
)
|
|
|
|
FetchContent_MakeAvailable(Catch2)
|
|
|
|
list(APPEND CMAKE_MODULE_PATH ${catch2_SOURCE_DIR}/extras)
|
|
|
|
endif ()
|
|
|
|
|
|
|
|
message(STATUS "[DEPS] Processing MagicEnum")
|
|
|
|
FetchContent_Declare(
|
|
|
|
magic_enum
|
|
|
|
GIT_REPOSITORY https://github.com/Neargye/magic_enum
|
|
|
|
GIT_TAG v0.9.3
|
|
|
|
GIT_SHALLOW TRUE
|
|
|
|
GIT_PROGRESS TRUE
|
|
|
|
OVERRIDE_FIND_PACKAGE
|
|
|
|
)
|
|
|
|
FetchContent_MakeAvailable(magic_enum)
|
|
|
|
|
2023-11-04 00:22:45 +08:00
|
|
|
message(STATUS "[DEPS] Processing tbb")
|
|
|
|
find_package(TBB REQUIRED COMPONENTS tbb)
|
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
|
2023-11-03 21:05:08 +08:00
|
|
|
message(STATUS "[DEPS] Processing generator")
|
|
|
|
file(DOWNLOAD
|
|
|
|
"https://raw.githubusercontent.com/lewissbaker/generator/master/include/__generator.hpp"
|
|
|
|
"${CMAKE_BINARY_DIR}/external/generator.hpp")
|
|
|
|
include_directories(password-analyzer PRIVATE ${CMAKE_BINARY_DIR}/external)
|
|
|
|
|
|
|
|
set(COMMON_SOURCES
|
|
|
|
defs.hpp
|
|
|
|
utils.cpp
|
2023-11-03 22:17:53 +08:00
|
|
|
stat_date.cpp
|
2023-11-03 21:11:37 +08:00
|
|
|
stat_keystroke.cpp
|
2023-11-03 21:06:09 +08:00
|
|
|
stat_length.cpp
|
2023-11-03 21:11:37 +08:00
|
|
|
stat_struct.cpp
|
2023-11-04 00:22:45 +08:00
|
|
|
stat_word.cpp
|
2023-11-03 21:05:08 +08:00
|
|
|
)
|
|
|
|
set(COMMON_LIBRARIES
|
|
|
|
magic_enum::magic_enum
|
|
|
|
spdlog::spdlog
|
2023-11-04 00:22:45 +08:00
|
|
|
TBB::tbb
|
|
|
|
Threads::Threads
|
2023-11-03 21:05:08 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
add_executable(password-analyzer ${COMMON_SOURCES} analyzer.cpp)
|
|
|
|
target_link_libraries(password-analyzer PRIVATE ${COMMON_LIBRARIES})
|
2023-11-03 21:12:25 +08:00
|
|
|
|
|
|
|
add_executable(tests ${COMMON_SOURCES} tests.cpp)
|
|
|
|
target_link_libraries(tests PRIVATE Catch2::Catch2WithMain ${COMMON_LIBRARIES})
|
|
|
|
|
|
|
|
include(CTest)
|
|
|
|
include(Catch)
|
|
|
|
catch_discover_tests(tests)
|