cmake_minimum_required(VERSION 3.2.0) set(CMAKE_EXPORT_COMPILE_COMMANDS 1) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS ON) if(DEFINED PROJECT_NAME) set(IS_SUBPROJECT ON) else() set(IS_SUBPROJECT OFF) endif() project(yacppdic CXX) add_library(${PROJECT_NAME} STATIC) target_sources( ${PROJECT_NAME} PRIVATE src/object_identifier.cpp ) target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_20) target_compile_options( ${PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic -Wshadow -Wold-style-cast -Wcast-align -Wno-unused -Wconversion -Wcast-qual -Wctor-dtor-privacy -Wdisabled-optimization -Wformat=2 -Winit-self -Wmissing-declarations -Wmissing-include-dirs -Woverloaded-virtual -Wredundant-decls -Wsign-conversion -Wsign-promo -Wstrict-overflow=5 -Wswitch-default -Wundef -Werror -pedantic -fsanitize=address -fno-exceptions ) target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=address) target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src PUBLIC $ ) add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) if(test) if(NOT IS_SUBPROJECT) add_subdirectory(test) else() message(WARNING "Tests excluded because the library is a subproject") endif() endif() if(examples) add_subdirectory(examples/basic) endif()