-
-
Notifications
You must be signed in to change notification settings - Fork 201
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
77 lines (66 loc) · 2 KB
/
CMakeLists.txt
File metadata and controls
77 lines (66 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# ©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}
)