cmake_minimum_required(VERSION "3.27.0") project("elf" DESCRIPTION "ELF file format library" VERSION "0.0.1" LANGUAGES CXX ) include("CTest") #[============================================================================[ # External Dependencies #]============================================================================] include("FetchContent") if (BUILD_TESTING) FetchContent_Declare( "Catch2" URL "https://github.com/catchorg/Catch2/archive/refs/tags/v3.7.1.tar.gz" URL_HASH "SHA256=c991b247a1a0d7bb9c39aa35faf0fe9e19764213f28ffba3109388e62ee0269c" EXCLUDE_FROM_ALL FIND_PACKAGE_ARGS ) FetchContent_MakeAvailable("Catch2") find_package("Catch2") include("Catch") endif() #[============================================================================[ # Library #]============================================================================] add_library("elf" INTERFACE) add_library("elf::lib" ALIAS "elf") file(GLOB_RECURSE ELF_HEADERS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} CONFIGURE_DEPENDS "elf/**.hpp" ) target_sources("elf" INTERFACE FILE_SET HEADERS BASE_DIRS "elf" FILES ${ELF_HEADERS} ) target_include_directories("elf" INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}" ) set_target_properties("elf" PROPERTIES VERIFY_INTERFACE_HEADER_SETS YES )