From 17cd9b2de0ff7f04fbd7924dd2bb3ab6316b9022 Mon Sep 17 00:00:00 2001 From: Jan Kuhlmann <33833587+M2-TE@users.noreply.github.com> Date: Tue, 12 Nov 2024 14:52:31 +0100 Subject: [PATCH] compile example executables if top level project --- CMakeLists.txt | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b924a2f..364a138 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,9 @@ -cmake_minimum_required(VERSION 3.19) +cmake_minimum_required(VERSION 3.21) project(tglib LANGUAGES CXX) +# leave compiler options up to parent project, as these libs are header-only + +# create header-only interface target for graphs.hpp add_library(tglib_graphs INTERFACE) add_library(${PROJECT_NAME}::graphs ALIAS tglib_graphs) target_sources(tglib_graphs PUBLIC @@ -8,9 +11,20 @@ target_sources(tglib_graphs PUBLIC BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} FILES graphs.hpp) +# create header-only interface target for tables.hpp add_library(tglib_tables INTERFACE) add_library(${PROJECT_NAME}::tables ALIAS tglib_tables) target_sources(tglib_tables PUBLIC FILE_SET HEADERS BASE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} - FILES tables.hpp) \ No newline at end of file + FILES tables.hpp) + +# compile example binaries as executables +if (PROJECT_IS_TOP_LEVEL) + set(CMAKE_CXX_STANDARD 14) + set(CMAKE_CXX_STANDARD_REQUIRED ON) + add_executable(tglib_graphs_example "${CMAKE_CURRENT_SOURCE_DIR}/graphs.cpp") + target_link_libraries(tglib_graphs_example PRIVATE tglib::graphs) + add_executable(tglib_tables_example "${CMAKE_CURRENT_SOURCE_DIR}/tables.cpp") + target_link_libraries(tglib_tables_example PRIVATE tglib::tables) +endif() \ No newline at end of file