This creates and installs a package version file and a package config file. These are used by find_package with the CONFIG option, and are roughly equivalent to pkgconfig, but is cmake specific rather than linux specific.
v2: - Use configure_package_config_file() instead of config_file(), which generates helper macros and resolves relative paths allowing the entire install to be moved. - Update WaffleConfig.cmake.in to take advantage of configure_package_config_file() - Use SameMajorVersion instead of AnyNewerVersion for version compatibility. Since waffle uses apache's numbering scheme 2.0.0 should not fulfill a requirement of 1.5.0 and vice versa. v3: - Use CMAKE_BINARY_DIR (Jordan) - Move generation of cmake config to the same area of the cmake file as pkgconfig Signed-off-by: Dylan Baker <dylanx.c.ba...@intel.com> Reviewed-by: Jordan Justen <jordan.l.jus...@intel.com> --- CMakeLists.txt | 27 ++++++++++++++++++++++++++- cmake/Modules/.gitignore | 2 ++ cmake/Modules/WaffleConfig.cmake.in | 12 ++++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 cmake/Modules/.gitignore create mode 100644 cmake/Modules/WaffleConfig.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index bde8096..6fabb54 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -128,7 +128,8 @@ if(waffle_build_examples) endif() # ------------------------------------------------------------------------------ -# Install packaging files: waffle.pc, FindWaffle.cmake +# Install packaging files: waffle.pc, FindWaffle.cmake, +# WaffleConfigVersion.cmake, and WaffleConfig.cmake # ------------------------------------------------------------------------------ configure_file(waffle.pc.in ${waffle_libname}.pc @ONLY) @@ -145,6 +146,30 @@ install( COMPONENT cmakefind ) +set(ConfigPackageLocation "${CMAKE_INSTALL_LIBDIR}/cmake/Waffle") +include(CMakePackageConfigHelpers) +write_basic_package_version_file( + "${CMAKE_BINARY_DIR}/cmake/Modules/WaffleConfigVersion.cmake" + VERSION "${waffle_version}" + COMPATIBILITY SameMajorVersion +) + +configure_package_config_file( + cmake/Modules/WaffleConfig.cmake.in + cmake/Modules/WaffleConfig.cmake + INSTALL_DESTINATION "${ConfigPackageLocation}" + PATH_VARS CMAKE_INSTALL_LIBDIR CMAKE_INSTALL_INCLUDEDIR + NO_CHECK_REQUIRED_COMPONENTS_MACRO +) + +install( + FILES + "${CMAKE_BINARY_DIR}/cmake/Modules/WaffleConfigVersion.cmake" + "${CMAKE_BINARY_DIR}/cmake/Modules/WaffleConfig.cmake" + DESTINATION "${ConfigPackageLocation}" + COMPONENT devel +) + # ------------------------------------------------------------------------------ # Install core documentation # ------------------------------------------------------------------------------ diff --git a/cmake/Modules/.gitignore b/cmake/Modules/.gitignore new file mode 100644 index 0000000..9742f46 --- /dev/null +++ b/cmake/Modules/.gitignore @@ -0,0 +1,2 @@ +WaffleConfigVersion.cmake +WaffleConfig.cmake diff --git a/cmake/Modules/WaffleConfig.cmake.in b/cmake/Modules/WaffleConfig.cmake.in new file mode 100644 index 0000000..b60b470 --- /dev/null +++ b/cmake/Modules/WaffleConfig.cmake.in @@ -0,0 +1,12 @@ +# Config module for Waffle +# +# Provides the following variables +# Waffle_INCLUDE_DIRS - Directories to include +# Waffle_LIBRARIES - Libraries to link +# Waffle_LIBRARY_DIRS - Library directories to search for link libraries + +@PACKAGE_INIT@ + +set_and_check(Waffle_INCLUDE_DIRS "@PACKAGE_CMAKE_INSTALL_INCLUDEDIR@/@waffle_libname@") +set_and_check(Waffle_LIBRARY_DIRS "@PACKAGE_CMAKE_INSTALL_LIBDIR@") +set(Waffle_LIBRARIES "@waffle_libname@") -- 2.2.1 _______________________________________________ waffle mailing list waffle@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/waffle