| @@ -0,0 +1,3 @@ | |||||
| [submodule "cmake/modules"] | |||||
| path = cmake/modules | |||||
| url = b3rgmann@git.bergmann89.de:cpp/CmakeModules.git | |||||
| @@ -0,0 +1,56 @@ | |||||
| # Initialize CMake ################################################################################ | |||||
| CMake_Minimum_Required ( VERSION 3.12.0 FATAL_ERROR ) | |||||
| # Set CMAKE_BUILD_TYPE | |||||
| If ( NOT CMAKE_BUILD_TYPE ) | |||||
| Set ( CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build!" FORCE ) | |||||
| EndIf ( NOT CMAKE_BUILD_TYPE ) | |||||
| Set_Property ( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release RelWithDebInfo MinSizeRel ) | |||||
| # Set CMAKE_MODULE_PATH | |||||
| If ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" ) | |||||
| Set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} | |||||
| "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" ) | |||||
| EndIf ( ) | |||||
| If ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/cmake/" ) | |||||
| Set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} | |||||
| "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" ) | |||||
| EndIf ( ) | |||||
| # Project ######################################################################################### | |||||
| Include ( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppmp-var.cmake ) | |||||
| Project ( cppmp | |||||
| DESCRIPTION "A simple library" | |||||
| VERSION "${CPPMP_VERSION}" ) | |||||
| Include ( CTest ) | |||||
| Include ( GNUInstallDirs ) | |||||
| # Subdirectories | |||||
| Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/src ) | |||||
| Add_SubDirectory ( ${CMAKE_CURRENT_SOURCE_DIR}/test ) | |||||
| # Install | |||||
| Include ( CMakePackageConfigHelpers ) | |||||
| Write_Basic_Package_Version_File ( "${CMAKE_CURRENT_BINARY_DIR}/cmake/cppmp-config-version.cmake" | |||||
| VERSION ${CPPMP_VERSION} | |||||
| COMPATIBILITY AnyNewerVersion ) | |||||
| Configure_File ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cppmp-config.cmake" | |||||
| "${CMAKE_CURRENT_BINARY_DIR}/cmake/cppmp-config.cmake" | |||||
| @ONLY ) | |||||
| Set ( ConfigPackageLocation "${CPPMP_INSTALL_DIR_SHARE}/cmake" ) | |||||
| Install ( EXPORT | |||||
| cppmp | |||||
| NAMESPACE | |||||
| cppmp:: | |||||
| DESTINATION | |||||
| ${ConfigPackageLocation} ) | |||||
| Install ( FILES | |||||
| "${CMAKE_CURRENT_BINARY_DIR}/cmake/cppmp-config.cmake" | |||||
| "${CMAKE_CURRENT_BINARY_DIR}/cmake/cppmp-config-version.cmake" | |||||
| DESTINATION | |||||
| ${ConfigPackageLocation} | |||||
| COMPONENT | |||||
| Devel ) | |||||
| @@ -0,0 +1,10 @@ | |||||
| # cppmp-config.cmake - package configuration file | |||||
| Message ( WARNING "Please configure the dependencies of this package!" ) | |||||
| # Include ( CMakeFindDependencyMacro ) | |||||
| # Find_Dependency ( <dependency> ) | |||||
| Include ( FindPackageHandleStandardArgs ) | |||||
| Set ( ${CMAKE_FIND_PACKAGE_NAME}_CONFIG ${CMAKE_CURRENT_LIST_FILE} ) | |||||
| Find_Package_Handle_Standard_Args ( cppmp CONFIG_MODE ) | |||||
| Include ( "${CMAKE_CURRENT_LIST_DIR}/cppmp.cmake") | |||||
| @@ -0,0 +1,31 @@ | |||||
| # Version | |||||
| Set ( CPPMP_VERSION_MAJOR 1 ) | |||||
| Set ( CPPMP_VERSION_MINOR 0 ) | |||||
| Set ( CPPMP_VERSION_PATCH 0 ) | |||||
| Set ( CPPMP_VERSION_BUILD 0 ) | |||||
| Set ( CPPMP_VERSION_SHORT "${CPPMP_VERSION_MAJOR}.${CPPMP_VERSION_MINOR}" ) | |||||
| Set ( CPPMP_VERSION "${CPPMP_VERSION_SHORT}.${CPPMP_VERSION_PATCH}.${CPPMP_VERSION_BUILD}" ) | |||||
| Set ( CPPMP_NAME "cppmp-${CPPMP_VERSION_SHORT}" ) | |||||
| Set ( CPPMP_OUTPUTNAME "cppmp" ) | |||||
| # Install directories | |||||
| Set ( CPPMP_INSTALL_DIR_INCLUDE "include/${CPPMP_NAME}" ) | |||||
| Set ( CPPMP_INSTALL_DIR_LIB "lib" ) | |||||
| Set ( CPPMP_INSTALL_DIR_SHARE "share/${CPPMP_NAME}" ) | |||||
| # C Standard | |||||
| Set ( CMAKE_C_STANDARD 11 ) | |||||
| Set ( CMAKE_CXX_STANDARD 17 ) | |||||
| Set ( CMAKE_C_STANDARD_REQUIRED ON ) | |||||
| Set ( CMAKE_CXX_STANDARD_REQUIRED ON ) | |||||
| # Git Version | |||||
| Include ( git_helper OPTIONAL RESULT_VARIABLE HAS_GIT_HELPER ) | |||||
| If ( HAS_GIT_HELPER ) | |||||
| GitGetVersion ( ${CMAKE_CURRENT_LIST_DIR}/.. | |||||
| CPPMP_VERSION_MAJOR | |||||
| CPPMP_VERSION_MINOR | |||||
| CPPMP_VERSION_PATCH | |||||
| CPPMP_VERSION_BUILD | |||||
| CPPMP_VERSION_HASH ) | |||||
| EndIf ( ) | |||||
| @@ -0,0 +1 @@ | |||||
| Subproject commit 1a32531aef2deeebd5637b1873bc4e976628801c | |||||
| @@ -0,0 +1,3 @@ | |||||
| #pragma once | |||||
| #include <cppmp/dummy.h> | |||||
| @@ -0,0 +1,13 @@ | |||||
| #pragma once | |||||
| #include <string> | |||||
| namespace cppmp | |||||
| { | |||||
| struct Dummy | |||||
| { | |||||
| static std::string getHelloWorld(); | |||||
| }; | |||||
| } | |||||
| @@ -0,0 +1,25 @@ | |||||
| # Initialize ###################################################################################### | |||||
| Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE ) | |||||
| Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC ) | |||||
| Include ( strip_symbols OPTIONAL RESULT_VARIABLE HAS_STRIP_SYMBOLS ) | |||||
| # Interface Library ############################################################################### | |||||
| Set ( CPPMP_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../include ) | |||||
| Add_Library ( cppmp INTERFACE ) | |||||
| Target_Include_Directories ( cppmp | |||||
| INTERFACE | |||||
| $<BUILD_INTERFACE:${CPPMP_INCLUDE_DIR}> | |||||
| $<INSTALL_INTERFACE:${CPPMP_INSTALL_DIR_INCLUDE}> ) | |||||
| # Install ######################################################################################### | |||||
| # Header | |||||
| Install ( FILES ${CPPMP_INCLUDE_DIR}/cppmp.h | |||||
| DESTINATION ${CPPMP_INSTALL_DIR_INCLUDE} ) | |||||
| Install ( DIRECTORY ${CPPMP_INCLUDE_DIR}/cppmp | |||||
| DESTINATION ${CPPMP_INSTALL_DIR_INCLUDE} ) | |||||
| Install ( TARGETS cppmp | |||||
| EXPORT cppmp | |||||
| DESTINATION ${CPPMP_INSTALL_DIR_INCLUDE} ) | |||||
| @@ -0,0 +1,43 @@ | |||||
| # Initialize ###################################################################################### | |||||
| Include ( cotire OPTIONAL RESULT_VARIABLE HAS_COTIRE ) | |||||
| Include ( pedantic OPTIONAL RESULT_VARIABLE HAS_PEDANTIC ) | |||||
| Include ( cmake_tests OPTIONAL RESULT_VARIABLE HAS_CMAKE_TESTS ) | |||||
| # Test ############################################################################################ | |||||
| Find_Package ( GTest ) | |||||
| If ( NOT "${GTest_FOUND}" ) | |||||
| Return ( ) | |||||
| EndIf ( ) | |||||
| File ( GLOB_RECURSE CPPMP_TEST_HEADER_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.h ) | |||||
| File ( GLOB_RECURSE CPPMP_TEST_INLINE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.inl ) | |||||
| File ( GLOB_RECURSE CPPMP_TEST_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ) | |||||
| Add_Executable ( cppmp-test | |||||
| EXCLUDE_FROM_ALL | |||||
| ${CPPMP_TEST_HEADER_FILES} | |||||
| ${CPPMP_TEST_INLINE_FILES} | |||||
| ${CPPMP_TEST_SOURCE_FILES} ) | |||||
| Target_Link_Libraries ( cppmp-test | |||||
| PUBLIC | |||||
| cppmp-objects | |||||
| GTest::Main ) | |||||
| # pedantic | |||||
| If ( HAS_PEDANTIC ) | |||||
| Pedantic_Apply_Flags_Target ( cppmp-test ALL ) | |||||
| EndIf ( ) | |||||
| # optimization | |||||
| If ( HAS_COTIRE ) | |||||
| Cotire ( cppmp-test ) | |||||
| EndIf ( ) | |||||
| # test | |||||
| If ( HAS_CMAKE_TESTS ) | |||||
| Add_CMake_Test ( NAME cppmp TARGET cppmp-test ) | |||||
| Else ( ) | |||||
| Add_Test ( NAME cppmp COMMAND cppmp-test ) | |||||
| EndIf ( ) | |||||
| @@ -0,0 +1,11 @@ | |||||
| #include <gtest/gtest.h> | |||||
| #include <cppmp.h> | |||||
| using namespace ::testing; | |||||
| using namespace ::cppmp; | |||||
| TEST(cppmp, getHelloWorld) | |||||
| { | |||||
| EXPECT_EQ(Dummy::getHelloWorld(), "Hello World!"); | |||||
| } | |||||