Skip to content

Commit

Permalink
cmake integration test
Browse files Browse the repository at this point in the history
  • Loading branch information
SpectraL519 committed May 15, 2024
1 parent 2e32489 commit 045ebf7
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 59 deletions.
89 changes: 36 additions & 53 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.12)

# check if CPP-AP is a top level project
# Check if CPP-AP is a top level project
if (NOT DEFINED PROJECT_NAME)
set(CPP_AP_IS_TOP_LEVEL_PROJECT ON)
else()
Expand All @@ -15,40 +15,39 @@ project(
LANGUAGES CXX
)

# define the library target
# Define the library target
add_library(cpp-ap INTERFACE)
target_include_directories(cpp-ap INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)
set_target_properties(cpp-ap PROPERTIES
CXX_STANDARD 20
CXX_STANDARD_REQUIRED YES
)

# installation rules
# Installation configuration
include(GNUInstallDirs)
install(TARGETS cpp-ap
EXPORT cpp-ap-targets
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
include(CMakePackageConfigHelpers)

install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
# Install the headers
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})

# generate and install the CMake package configuration files
install(EXPORT cpp-ap-targets
FILE cpp-ap-targets.cmake
NAMESPACE cpp-ap::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cpp-ap
# Install the library target
install(TARGETS cpp-ap EXPORT cpp-ap-targets)

# Create a Config file for find_package
configure_package_config_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/cpp-ap-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/cpp-ap-config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cpp-ap
)

include(CMakePackageConfigHelpers)
write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/cpp-ap-config-version.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY ExactVersion
)

configure_package_config_file(
${CMAKE_CURRENT_LIST_DIR}/cmake/cpp-ap-config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/cpp-ap-config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cpp-ap
COMPATIBILITY SameMajorVersion
)

install(FILES
Expand All @@ -57,40 +56,24 @@ install(FILES
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cpp-ap
)

if (CPP_AP_IS_TOP_LEVEL_PROJECT)
option(CPP_AP_BUILD_TESTS "Build tests" ON)
option(CPP_AP_BUILD_EXAMPLES "Build examples" OFF)

if(CPP_AP_BUILD_EXAMPLES)
add_subdirectory(examples)
endif()
install(EXPORT cpp-ap-targets
FILE cpp-ap-targets.cmake
NAMESPACE cpp-ap::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cpp-ap
)

if(CPP_AP_BUILD_TESTS)
enable_testing()
# For FetchContent usage
if (CPP_AP_IS_TOP_LEVEL_PROJECT)
include(CTest)
if (BUILD_TESTING)
add_subdirectory(test)
endif()
endif()

if(CPP_AP_INSTALL)
install(EXPORT cpp-ap-targets
FILE cpp-ap-config.cmake
NAMESPACE ap::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cpp-ap
)

install(FILES
${CMAKE_CURRENT_BINARY_DIR}/cpp-ap-config-version.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/cpp-ap
)
endif()

set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_DESCRIPTION}")
set(CPACK_PACKAGE_VENDOR "SpectraL519")
set(CPACK_PACKAGE_CONTACT "Jakub Musiał jmusial2003@gmail.com")
set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
set(CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}")
# Exporting from the build tree
export(EXPORT cpp-ap-targets
FILE ${CMAKE_CURRENT_BINARY_DIR}/cpp-ap-targets.cmake
NAMESPACE cpp-ap::
)

include(CPack)
endif()
export(PACKAGE cpp-ap)
10 changes: 4 additions & 6 deletions cmake/cpp-ap-config.cmake.in
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
@PACKAGE_INIT@

# avoid repeatedly including the targets
if(NOT TARGET cpp-ap::cpp-ap)
# Provide path for scripts
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
include(CMakeFindDependencyMacro)

include(${CMAKE_CURRENT_LIST_DIR}/cpp-ap-targets.cmake)
endif()
set_and_check(CPP_AP_INCLUDE_DIR "@PACKAGE_INSTALL_PREFIX@/@CMAKE_INSTALL_INCLUDEDIR@")

include("${CMAKE_CURRENT_LIST_DIR}/cpp-ap-targets.cmake")

0 comments on commit 045ebf7

Please sign in to comment.