password-analyzer/CMakeLists.txt

87 lines
2.4 KiB
CMake
Raw Permalink Normal View History

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)