From 1f4f3f53e1484ea0dbad93ac71715d5b8a8d61da Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Fri, 29 May 2026 23:49:29 +0900 Subject: [PATCH 1/4] cmake: Bump minimum required version. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e28f51f..085a948 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,7 +5,7 @@ # Copyright (c) 2016-2020 Alexey Gruzdev # -cmake_minimum_required (VERSION 3.8) +cmake_minimum_required (VERSION 3.15) if(NOT YATO_NO_PROJECT_FOLDERS) set_property(GLOBAL PROPERTY USE_FOLDERS ON) From 816b1db6db50e1cdf21c8ac758cb8f6183727b07 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Fri, 29 May 2026 23:52:20 +0900 Subject: [PATCH 2/4] cmake: Add installation targets. This makes it easy to install the library with 'make install', including the CMake config files for discovery. --- CMakeLists.txt | 61 +++++++++++++++++++++++++++++++++++---- cmake/YatoConfig.cmake.in | 3 ++ 2 files changed, 58 insertions(+), 6 deletions(-) create mode 100644 cmake/YatoConfig.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 085a948..5050550 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,10 @@ endif() set(YATO_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}) -project(Yato) +project(Yato VERSION 1.2.0 LANGUAGES CXX) + +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) #========================================== # Output @@ -48,11 +51,6 @@ if(MSVC) list(APPEND yato_extra_sources ${YATO_SOURCE_DIR}/extras/yato.natvis) endif() -add_custom_target(Yato SOURCES ${yato_sources} - ${yato_extra_sources} -) -set_property(TARGET Yato PROPERTY FOLDER "Modules") - #========================================== # Targets @@ -78,6 +76,57 @@ if(YATO_BUILD_ACTORS) list(APPEND YATO_INCLUDE_DIRS "${YATO_SOURCE_DIR}/modules/actors") endif() + +add_library(Yato INTERFACE) + +set_property(TARGET Yato PROPERTY FOLDER "Modules") + +target_sources(Yato INTERFACE + FILE_SET HEADERS + BASE_DIRS ${YATO_SOURCE_DIR}/include + FILES ${yato_sources} +) + +target_include_directories(Yato INTERFACE + $ + $ +) + +#========================================== +# Installation + +# Generate and install CMake config files. +write_basic_package_version_file( + "${CMAKE_CURRENT_BINARY_DIR}/YatoConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion +) + + +configure_package_config_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/YatoConfig.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/YatoConfig.cmake" + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Yato +) + +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/YatoConfig.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/YatoConfigVersion.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Yato +) + +# Install header-only library. +install(TARGETS Yato + EXPORT YatoTargets + FILE_SET HEADERS +) + +install(EXPORT YatoTargets + FILE YatoTargets.cmake + NAMESPACE Yato:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/Yato +) + #========================================== # Tests diff --git a/cmake/YatoConfig.cmake.in b/cmake/YatoConfig.cmake.in new file mode 100644 index 0000000..12b1625 --- /dev/null +++ b/cmake/YatoConfig.cmake.in @@ -0,0 +1,3 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/YatoTargets.cmake") From db578430c9793d4e4cb5977c3ae546fb33b703f5 Mon Sep 17 00:00:00 2001 From: Maxim Cournoyer Date: Sun, 31 May 2026 23:28:49 +0900 Subject: [PATCH 3/4] cmake: Fix typo. --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5050550..02dac6a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,7 +135,7 @@ if(YATO_BUILD_TESTS) add_subdirectory(./tests) endif() -option(YATO_BUILD_PERFORMANCE_TESTS "Buidl performance tests" OFF) +option(YATO_BUILD_PERFORMANCE_TESTS "Build performance tests" OFF) if(YATO_BUILD_PERFORMANCE_TESTS) add_subdirectory(./perf_tests) endif() From 96b9d53d25464a24ac8de38cad7d2b8a552612eb Mon Sep 17 00:00:00 2001 From: Alexey Gruzdev Date: Sun, 7 Jun 2026 15:14:23 +0300 Subject: [PATCH 4/4] Disabled install for GTEST and GBENCH Co-authored-by: Maxim Cournoyer --- cmake/dependency.gbenchmark.cmake | 1 + cmake/dependency.gtest.cmake | 1 + 2 files changed, 2 insertions(+) diff --git a/cmake/dependency.gbenchmark.cmake b/cmake/dependency.gbenchmark.cmake index 82a654a..7b144cf 100644 --- a/cmake/dependency.gbenchmark.cmake +++ b/cmake/dependency.gbenchmark.cmake @@ -30,6 +30,7 @@ if(NOT TARGET benchmark) set(GMOCK_INCLUDE_DIRS ${GMOCK_INCLUDE_DIR}) set(BENCHMARK_ENABLE_TESTING OFF) + set(BENCHMARK_ENABLE_INSTALL OFF) set(HAVE_LIB_RT OFF) #set(HAVE_STD_REGEX ON) diff --git a/cmake/dependency.gtest.cmake b/cmake/dependency.gtest.cmake index 5e07fd0..5991c7f 100644 --- a/cmake/dependency.gtest.cmake +++ b/cmake/dependency.gtest.cmake @@ -34,6 +34,7 @@ if(NOT TARGET gtest) set(BUILD_GTEST ON CACHE BOOL "gtest setup" FORCE) set(BUILD_GMOCK OFF CACHE BOOL "gtest setup" FORCE) set(BUILD_SHARED_LIBS OFF CACHE BOOL "gtest setup" FORCE) + set(INSTALL_GTEST OFF CACHE BOOL "gtest setup" FORCE) set(gtest_disable_pthreads ON CACHE BOOL "gtest setup" FORCE) set(gtest_force_shared_crt ON CACHE BOOL "gtest setup" FORCE)