mirror of
https://github.com/progsource/maddy.git
synced 2026-03-24 23:40:39 +01:00
Add Cmake install and find_package support
This commit is contained in:
@@ -14,7 +14,7 @@ maddy uses [semver versioning](https://semver.org/).
|
||||
|
||||
## Upcoming
|
||||
|
||||
* ...
|
||||
*  Added CMake install and find_package() support.
|
||||
|
||||
## version 1.5.0 2025-04-21
|
||||
|
||||
|
||||
@@ -3,10 +3,11 @@
|
||||
|
||||
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(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
|
||||
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})
|
||||
@@ -41,7 +42,8 @@ endif()
|
||||
|
||||
add_library(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})
|
||||
add_custom_target(${PROJECT_NAME}_package DEPENDS ${CMAKE_BINARY_DIR}/${PROJECT_NAME}-src.zip)
|
||||
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}
|
||||
)
|
||||
|
||||
11
README.md
11
README.md
@@ -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
|
||||
|
||||
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.
|
||||
|
||||
This way you can add
|
||||
|
||||
4
cmake/maddyConfig.cmake.in
Normal file
4
cmake/maddyConfig.cmake.in
Normal file
@@ -0,0 +1,4 @@
|
||||
@PACKAGE_INIT@
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/maddyTargets.cmake")
|
||||
check_required_components(maddy)
|
||||
Reference in New Issue
Block a user