# 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 ######################################################################################### # Version Set ( LIBHELLOWORLD_VERSION_MAJOR 1 ) Set ( LIBHELLOWORLD_VERSION_MINOR 0 ) Set ( LIBHELLOWORLD_VERSION_PATCH 0 ) Set ( LIBHELLOWORLD_VERSION_BUILD 0 ) Set ( LIBHELLOWORLD_VERSION_SHORT "${LIBHELLOWORLD_VERSION_MAJOR}.${LIBHELLOWORLD_VERSION_MINOR}" ) Set ( LIBHELLOWORLD_VERSION "${LIBHELLOWORLD_VERSION_SHORT}.${LIBHELLOWORLD_VERSION_PATCH}.${LIBHELLOWORLD_VERSION_BUILD}" ) Set ( LIBHELLOWORLD_NAME "libhelloworld-${LIBHELLOWORLD_VERSION_SHORT}" ) # Install directories Set ( LIBHELLOWORLD_INSTALL_DIR_INCLUDE "include/${LIBHELLOWORLD_NAME}" ) Set ( LIBHELLOWORLD_INSTALL_DIR_LIB "lib/${LIBHELLOWORLD_NAME}" ) Set ( LIBHELLOWORLD_INSTALL_DIR_SHARE "share/${LIBHELLOWORLD_NAME}" ) # Project Project ( libhelloworld DESCRIPTION "A simple library" VERSION "${LIBHELLOWORLD_VERSION}" ) Include ( CTest ) # C Standard Set ( CMAKE_C_STANDARD 11 ) Set ( CMAKE_CXX_STANDARD 17 ) Set ( CMAKE_C_STANDARD_REQUIRED ON ) Set ( CMAKE_CXX_STANDARD_REQUIRED ON ) # 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/libhelloworld-config-version.cmake" VERSION ${LIBHELLOWORLD_VERSION} COMPATIBILITY AnyNewerVersion ) Configure_File ( "${CMAKE_CURRENT_SOURCE_DIR}/cmake/libhelloworld-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/cmake/libhelloworld-config.cmake" @ONLY ) Set ( ConfigPackageLocation "${LIBHELLOWORLD_INSTALL_DIR_SHARE}/cmake" ) Install ( EXPORT libhelloworld DESTINATION ${ConfigPackageLocation} ) Install ( FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake/libhelloworld-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/cmake/libhelloworld-config-version.cmake" DESTINATION ${ConfigPackageLocation} COMPONENT Devel )