You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.4 KiB
79 lines
2.4 KiB
3 years ago
|
cmake_minimum_required(VERSION 3.15)
|
||
|
project(MathFunctions)
|
||
|
|
||
|
# make cache variables for install destinations
|
||
|
include(GNUInstallDirs)
|
||
|
|
||
|
# specify the C++ standard
|
||
|
set(CMAKE_CXX_STANDARD 11)
|
||
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
||
|
|
||
|
# create library
|
||
|
add_library(MathFunctions STATIC MathFunctions.cxx)
|
||
|
|
||
|
# add include directories
|
||
|
target_include_directories(MathFunctions
|
||
|
PUBLIC
|
||
|
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>"
|
||
|
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>"
|
||
|
)
|
||
|
|
||
|
# install the target and create export-set
|
||
|
install(TARGETS MathFunctions
|
||
|
EXPORT MathFunctionsTargets
|
||
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||
|
)
|
||
|
|
||
|
# install header file
|
||
|
install(FILES MathFunctions.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||
|
|
||
|
# generate and install export file
|
||
|
install(EXPORT MathFunctionsTargets
|
||
|
FILE MathFunctionsTargets.cmake
|
||
|
NAMESPACE MathFunctions::
|
||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MathFunctions
|
||
|
)
|
||
|
|
||
|
# include CMakePackageConfigHelpers macro
|
||
|
include(CMakePackageConfigHelpers)
|
||
|
|
||
|
# set version
|
||
|
set(version 3.4.1)
|
||
|
|
||
|
set_property(TARGET MathFunctions PROPERTY VERSION ${version})
|
||
|
set_property(TARGET MathFunctions PROPERTY SOVERSION 3)
|
||
|
set_property(TARGET MathFunctions PROPERTY
|
||
|
INTERFACE_MathFunctions_MAJOR_VERSION 3)
|
||
|
set_property(TARGET MathFunctions APPEND PROPERTY
|
||
|
COMPATIBLE_INTERFACE_STRING MathFunctions_MAJOR_VERSION
|
||
|
)
|
||
|
|
||
|
# generate the version file for the config file
|
||
|
write_basic_package_version_file(
|
||
|
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfigVersion.cmake"
|
||
|
VERSION "${version}"
|
||
|
COMPATIBILITY AnyNewerVersion
|
||
|
)
|
||
|
|
||
|
# create config file
|
||
|
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
|
||
|
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake"
|
||
|
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MathFunctions
|
||
|
)
|
||
|
|
||
|
# install config files
|
||
|
install(FILES
|
||
|
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfig.cmake"
|
||
|
"${CMAKE_CURRENT_BINARY_DIR}/MathFunctionsConfigVersion.cmake"
|
||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/MathFunctions
|
||
|
)
|
||
|
|
||
|
# generate the export targets for the build tree
|
||
|
export(EXPORT MathFunctionsTargets
|
||
|
FILE "${CMAKE_CURRENT_BINARY_DIR}/cmake/MathFunctionsTargets.cmake"
|
||
|
NAMESPACE MathFunctions::
|
||
|
)
|