78 lines
2.0 KiB
CMake
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}
|
|
)
|