[waffle] [Patch v3 2/3] cmake: Add cmake PackageConfig files
Dylan Baker
baker.dylan.c at gmail.com
Mon Dec 29 09:36:52 PST 2014
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.baker at intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen at 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
+
+ at 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
More information about the waffle
mailing list