# Linux build: # sudo apt install g++ cmake ninja-build zlib1g-dev libcrypto++-dev # cmake -S . -B build -G Ninja # cmake --build build cmake_minimum_required(VERSION 3.16) project(extract LANGUAGES CXX) if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Build type" FORCE) endif() set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) find_package(ZLIB REQUIRED) find_package(Threads REQUIRED) find_library(CRYPTOPP_LIBRARY NAMES cryptopp crypto++ REQUIRED) find_path(CRYPTOPP_INCLUDE_DIR NAMES cryptopp/aes.h crypto++/aes.h REQUIRED) set(CRYPTOPP_INCLUDE_DIRS "${CRYPTOPP_INCLUDE_DIR}") if(NOT EXISTS "${CRYPTOPP_INCLUDE_DIR}/cryptopp/aes.h" AND EXISTS "${CRYPTOPP_INCLUDE_DIR}/crypto++/aes.h") set(_cryptopp_alias "${CMAKE_BINARY_DIR}/cryptopp_alias") file(MAKE_DIRECTORY "${_cryptopp_alias}") file(CREATE_LINK "${CRYPTOPP_INCLUDE_DIR}/crypto++" "${_cryptopp_alias}/cryptopp" SYMBOLIC) list(PREPEND CRYPTOPP_INCLUDE_DIRS "${_cryptopp_alias}") endif() add_executable(extract src/main.cpp src/chunk.cpp src/keys.cpp ) target_include_directories(extract PRIVATE include include/thirdparty ${CRYPTOPP_INCLUDE_DIRS} ) target_link_libraries(extract PRIVATE ZLIB::ZLIB ${CRYPTOPP_LIBRARY} Threads::Threads ) add_custom_command(TARGET extract POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_SOURCE_DIR}/dist" COMMAND ${CMAKE_COMMAND} -E copy $ "${CMAKE_SOURCE_DIR}/dist/" )