cmake_minimum_required(VERSION 3.10) project(kgg-dec LANGUAGES CXX) include(CheckIPOSupported) check_ipo_supported(RESULT lto_supported OUTPUT error) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_executable(kgg-dec src/main.cpp src/common/base64.cpp src/infra/infra.cpp src/tc_tea/tc_tea.cpp src/qmc2/ekey.cpp src/qmc2/qmc2_factory.cpp src/qmc2/qmc2_map.cpp src/qmc2/qmc2_rc4.cpp ) target_include_directories(kgg-dec PRIVATE src/common src/tc_tea ) target_link_libraries(kgg-dec PRIVATE shell32 ole32) if (lto_supported) set_property(TARGET kgg-dec PROPERTY INTERPROCEDURAL_OPTIMIZATION TRUE) endif() if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -s -fdata-sections -ffunction-sections -flto -fmerge-all-constants -fno-exceptions -fno-rtti") set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s -Wl,--gc-sections -flto") endif()