From 26b3a42caa287e80d722474daeac0771fa948b07 Mon Sep 17 00:00:00 2001 From: Darren Harton Date: Tue, 17 Jan 2023 08:10:35 -0500 Subject: [PATCH 1/2] Added CMakeLists.txt --- makefile => .makefile | 0 CMakeLists.txt | 53 +++++++++++++++++++++++++++++++++++++++++++ cmake/config.cmake.in | 7 ++++++ 3 files changed, 60 insertions(+) rename makefile => .makefile (100%) create mode 100644 CMakeLists.txt create mode 100644 cmake/config.cmake.in diff --git a/makefile b/.makefile similarity index 100% rename from makefile rename to .makefile diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..d09476a --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,53 @@ +cmake_minimum_required(VERSION 3.12) + +project(CTGL VERSION 1.0 LANGUAGES CXX) + + +add_library(${PROJECT_NAME} INTERFACE) + +include(GNUInstallDirs) + +target_include_directories(${PROJECT_NAME} INTERFACE + $ + $) + + +set(CMAKE_INSTALL_INCLUDEDIR "include/${PROJECT_NAME}") + +include(CMakePackageConfigHelpers) + +# Create version file +write_basic_package_version_file("${PROJECT_NAME}ConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion) + +# Create a configuration file +configure_package_config_file( + "${PROJECT_SOURCE_DIR}/cmake/config.cmake.in" + "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PROJECT_NAME} + PATH_VARS CMAKE_INSTALL_INCLUDEDIR) + +# Install config and version files +install(FILES "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PROJECT_NAME}) + +# Define the install targets +install(TARGETS ${PROJECT_NAME} + EXPORT ${PROJECT_NAME}Targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + +# Install the public headers +install(DIRECTORY src/h/ + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +# Install the targets +install(EXPORT ${PROJECT_NAME}Targets + FILE ${PROJECT_NAME}Targets.cmake + NAMESPACE ${PROJECT_NAME}:: + DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/${PROJECT_NAME}) diff --git a/cmake/config.cmake.in b/cmake/config.cmake.in new file mode 100644 index 0000000..6e1cd02 --- /dev/null +++ b/cmake/config.cmake.in @@ -0,0 +1,7 @@ + +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") + +set_and_check(@PROJECT_NAME@_INCLUDE_DIR "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@") +check_required_components("@PROJECT_NAME@") From cdecb82c62a238e0d368f30cb254ed7353d2c37f Mon Sep 17 00:00:00 2001 From: Darren Harton Date: Tue, 17 Jan 2023 08:30:00 -0500 Subject: [PATCH 2/2] remove original make file --- .makefile | 40 ---------------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 .makefile diff --git a/.makefile b/.makefile deleted file mode 100644 index dbab5f5..0000000 --- a/.makefile +++ /dev/null @@ -1,40 +0,0 @@ -# Flags -# ------------------------------------------------------------------------------ -# Allow users to specify their preferred C++ compiler. -COMPILER=g++ -# Allow users to specify custom compiler flags. -FLAGS=-O2 - - -# Paths -# ------------------------------------------------------------------------------ -# Directories -BIN_DIR=./bin -CPP_DIR=./src/cpp -TEST_DIR=./src/test - -# Executables -MAIN_EXE=$(BIN_DIR)/ctgl.exe -TEST_EXE=$(BIN_DIR)/ctgl_test.exe - -# Files -TEST_FILES=$(wildcard $(TEST_DIR)/*_test.cpp) - - -# Rules -# ------------------------------------------------------------------------------ -all: bin - @rm -f $(MAIN_EXE) - @$(COMPILER) $(FLAGS) -std=c++17 -pedantic-errors -Wall -Wfatal-errors -o $(MAIN_EXE) $(CPP_DIR)/ctgl.cpp - @$(MAIN_EXE) - -test: bin - @rm -f $(TEST_EXE) - @$(COMPILER) $(FLAGS) -std=c++17 -pedantic-errors -Wall -Wfatal-errors -o $(TEST_EXE) $(TEST_FILES) -lgtest -lgtest_main - @$(TEST_EXE) - -bin: - @mkdir -p $(BIN_DIR) - -clean: - @rm -rf $(BIN_DIR)