cmake_minimum_required(VERSION 3.20) project( radhook VERSION 1.0.0 DESCRIPTION "cross-platform function hooking library" LANGUAGES CXX ) option(BUILD_SHARED_LIBS "Build shared library" ON) include(CTest) enable_testing() add_subdirectory(tests) add_library(radhook src/radhook.cpp ) target_include_directories(radhook PUBLIC $ $ ) target_compile_features(radhook PUBLIC cxx_std_20) if(BUILD_SHARED_LIBS) target_compile_definitions(radhook PRIVATE RADHOOK_BUILD) target_compile_definitions(radhook INTERFACE RADHOOK_SHARED) endif() if(WIN32) target_compile_definitions(radhook PUBLIC RADIUM_PLATFORM_WINDOWS=1) elseif(ANDROID) target_compile_definitions(radhook PUBLIC RADIUM_PLATFORM_ANDROID=1) endif() if(MSVC) target_compile_options(radhook PRIVATE /W4 /permissive- ) else() target_compile_options(radhook PRIVATE -Wall -Wextra -Wpedantic ) endif() target_compile_options(radhook PRIVATE $<$: $<$:/O2 /GL> $<$>:-O3 -fvisibility=hidden> > ) target_link_options(radhook PRIVATE $<$: $<$:/OPT:REF /OPT:ICF> $<$>:-s> > ) set_target_properties(radhook PROPERTIES CXX_VISIBILITY_PRESET hidden VISIBILITY_INLINES_HIDDEN YES ) include(GNUInstallDirs) install(TARGETS radhook EXPORT radhookTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install( FILES include/radhook.hpp DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) install( EXPORT radhookTargets FILE radhookTargets.cmake NAMESPACE Radium:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/radhook )