Cybersecurity-Projects/PROJECTS/beginner/hash-cracker/CMakeLists.txt

78 lines
2.0 KiB
CMake

# ©AngelaMos | 2026
# CMakeLists.txt
cmake_minimum_required(VERSION 3.25...4.2)
project(
hashcracker
VERSION 1.0.0
DESCRIPTION "Multi-threaded hash cracking tool"
LANGUAGES CXX
)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
add_library(project_warnings INTERFACE)
target_compile_options(project_warnings INTERFACE
-Wall -Wextra -Wpedantic -Wshadow -Wconversion
-Wnon-virtual-dtor -Wold-style-cast -Wcast-align
-Woverloaded-virtual -Wsign-conversion
)
find_package(OpenSSL REQUIRED)
find_package(Boost REQUIRED COMPONENTS program_options)
set(HASHCRACKER_SOURCES
src/hash/HashDetector.cpp
src/io/MappedFile.cpp
src/attack/DictionaryAttack.cpp
src/attack/BruteForceAttack.cpp
src/attack/RuleAttack.cpp
src/rules/RuleSet.cpp
src/threading/ThreadPool.cpp
src/display/Progress.cpp
)
add_library(hashcracker_lib STATIC ${HASHCRACKER_SOURCES})
target_include_directories(hashcracker_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(hashcracker_lib
PUBLIC OpenSSL::Crypto project_warnings
)
target_compile_features(hashcracker_lib PUBLIC cxx_std_23)
add_executable(hashcracker main.cpp)
target_link_libraries(hashcracker
PRIVATE hashcracker_lib Boost::program_options project_warnings
)
include(FetchContent)
FetchContent_Declare(googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG v1.15.2
GIT_SHALLOW TRUE
SYSTEM
)
FetchContent_MakeAvailable(googletest)
enable_testing()
set(HASHCRACKER_TESTS
tests/test_hashers.cpp
tests/test_hash_detector.cpp
tests/test_dictionary_attack.cpp
tests/test_bruteforce_attack.cpp
tests/test_rules.cpp
tests/test_engine.cpp
)
add_executable(hashcracker_tests ${HASHCRACKER_TESTS})
target_link_libraries(hashcracker_tests
PRIVATE hashcracker_lib GTest::gtest_main
)
include(GoogleTest)
gtest_discover_tests(hashcracker_tests
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)