Browse Source

* Initial commit

master
bergmann 4 years ago
commit
7e51d1fbf2
10 changed files with 196 additions and 0 deletions
  1. +3
    -0
      .gitmodules
  2. +56
    -0
      CMakeLists.txt
  3. +10
    -0
      cmake/cppmp-config.cmake
  4. +31
    -0
      cmake/cppmp-var.cmake
  5. +1
    -0
      cmake/modules
  6. +3
    -0
      include/cppmp.h
  7. +13
    -0
      include/cppmp/dummy.h
  8. +25
    -0
      src/CMakeLists.txt
  9. +43
    -0
      test/CMakeLists.txt
  10. +11
    -0
      test/cppmp/cppmp-tests.cpp

+ 3
- 0
.gitmodules View File

@@ -0,0 +1,3 @@
[submodule "cmake/modules"]
path = cmake/modules
url = b3rgmann@git.bergmann89.de:cpp/CmakeModules.git

+ 56
- 0
CMakeLists.txt View File

@@ -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 )

+ 10
- 0
cmake/cppmp-config.cmake View File

@@ -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")

+ 31
- 0
cmake/cppmp-var.cmake View File

@@ -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 ( )

+ 1
- 0
cmake/modules

@@ -0,0 +1 @@
Subproject commit 1a32531aef2deeebd5637b1873bc4e976628801c

+ 3
- 0
include/cppmp.h View File

@@ -0,0 +1,3 @@
#pragma once

#include <cppmp/dummy.h>

+ 13
- 0
include/cppmp/dummy.h View File

@@ -0,0 +1,13 @@
#pragma once

#include <string>

namespace cppmp
{

struct Dummy
{
static std::string getHelloWorld();
};

}

+ 25
- 0
src/CMakeLists.txt View File

@@ -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} )

+ 43
- 0
test/CMakeLists.txt View File

@@ -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 ( )

+ 11
- 0
test/cppmp/cppmp-tests.cpp View File

@@ -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!");
}

Loading…
Cancel
Save