diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..364a138 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,30 @@ +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 + FILE_SET HEADERS + 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) + +# 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 diff --git a/graphs.hpp b/graphs.hpp index b3d6a1d..07cb94f 100644 --- a/graphs.hpp +++ b/graphs.hpp @@ -1,5 +1,5 @@ // Teal Dulcet, CS546 - +#pragma once #include #include #include @@ -19,8 +19,13 @@ #include #include +#ifdef TGLIB_GRAPHS_NAMESPACE +namespace TGLIB_GRAPHS_NAMESPACE +{ +#else namespace graphs { +#endif using namespace std; enum style_type diff --git a/tables.hpp b/tables.hpp index fb4255d..268b888 100644 --- a/tables.hpp +++ b/tables.hpp @@ -1,5 +1,5 @@ // Teal Dulcet, CS546 - +#pragma once #include #include #include @@ -14,8 +14,13 @@ #include #include +#ifdef TGLIB_TABLES_NAMESPACE +namespace TGLIB_TABLES_NAMESPACE +{ +#else namespace tables { +#endif using namespace std; enum style_type