Add Cmake install and find_package support

This commit is contained in:
offa
2025-07-01 20:28:33 +02:00
committed by Petra Baranski
parent 4f977219c3
commit 36822075bf
4 changed files with 48 additions and 4 deletions

View File

@@ -14,7 +14,7 @@ maddy uses [semver versioning](https://semver.org/).
## Upcoming ## Upcoming
* ... * ![**ADDED**](https://img.shields.io/badge/-ADDED-%23099) Added CMake install and find_package() support.
## version 1.5.0 2025-04-21 ## version 1.5.0 2025-04-21

View File

@@ -3,10 +3,11 @@
cmake_minimum_required(VERSION 3.25) cmake_minimum_required(VERSION 3.25)
project(maddy) project(maddy VERSION 1.5.0)
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
include(GNUInstallDirs)
set(CMAKE_BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/build) set(CMAKE_BINARY_DIR ${CMAKE_CURRENT_SOURCE_DIR}/build)
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}) set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}) set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})
@@ -41,7 +42,8 @@ endif()
add_library(maddy INTERFACE) add_library(maddy INTERFACE)
target_include_directories(maddy INTERFACE target_include_directories(maddy INTERFACE
${MADDY_INCLUDE_DIR} $<BUILD_INTERFACE:${MADDY_INCLUDE_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
) )
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
@@ -64,3 +66,32 @@ if(${MADDY_CREATE_PACKAGE})
DEPENDS ${MADDY_PACKAGE_FILES}) DEPENDS ${MADDY_PACKAGE_FILES})
add_custom_target(${PROJECT_NAME}_package DEPENDS ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-src.zip) add_custom_target(${PROJECT_NAME}_package DEPENDS ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-src.zip)
endif() endif()
include(CMakePackageConfigHelpers)
install(DIRECTORY include/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(TARGETS ${PROJECT_NAME}
EXPORT ${PROJECT_NAME}Targets
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)
install(EXPORT ${PROJECT_NAME}Targets
FILE ${PROJECT_NAME}Targets.cmake
NAMESPACE ${PROJECT_NAME}::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
)
write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMinorVersion
)
configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
)

View File

@@ -30,7 +30,16 @@ The supported syntax can be found in the [definitions docs](docs/definitions.md)
## How to add maddy to your cmake project ## How to add maddy to your cmake project
You can use [FetchContent](https://cmake.org/cmake/help/latest/module/FetchContent.html) Use `find_package()` which provides `maddy::maddy` target:
```cmake
find_package(maddy REQUIRED)
add_executable(my_exe)
target_link_libraries(my_exe PRIVATE maddy::maddy)
```
Or you can use [FetchContent](https://cmake.org/cmake/help/latest/module/FetchContent.html)
which was introduced in CMake 3.11. which was introduced in CMake 3.11.
This way you can add This way you can add

View File

@@ -0,0 +1,4 @@
@PACKAGE_INIT@
include("${CMAKE_CURRENT_LIST_DIR}/maddyTargets.cmake")
check_required_components(maddy)