From c84d49f996c782693010b7d3e20c692b58869dba Mon Sep 17 00:00:00 2001 From: Daniel Trugman Date: Wed, 2 Aug 2023 22:02:56 +0100 Subject: [PATCH] Fix comments for pull-request #31 --- .gitignore | 2 ++ CMakeLists.txt | 39 +++++++++++++++++++++++++++++++-------- README.md | 13 +++++++++++++ cmake/pfs-config.cmake.in | 3 +-- 4 files changed, 47 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index fd99def..81f090d 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,8 @@ CMakeCache.txt CMakeFiles/* Makefile cmake_install.cmake +install_manifest.txt +pfs-config.cmake # Artifacts lib/* diff --git a/CMakeLists.txt b/CMakeLists.txt index 110dc5d..3f3d482 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,16 +64,39 @@ if (pfs_BUILD_TESTS) target_link_libraries (unittest PRIVATE pfs) endif() +# ------------------------------------------------------------------------ +# Generate a CMake package configuration file to support find_package() +# ------------------------------------------------------------------------ + include(CMakePackageConfigHelpers) +include(GNUInstallDirs) # Sets a default value for CMAKE_INSTALL_LIBDIR + +set (pfs_PACKAGE_CONFIG ${CMAKE_PROJECT_NAME}-config.cmake) +set (pfs_PACKAGE_CONFIG_IN ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${pfs_PACKAGE_CONFIG}.in) +set (pfs_PACKAGE_CONFIG_OUT ${CMAKE_CURRENT_BINARY_DIR}/${pfs_PACKAGE_CONFIG}) + +set (pfs_PACKAGE_INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME}) + +set (pfs_EXPORT_NAME ${CMAKE_PROJECT_NAME}Targets) + configure_package_config_file( - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${CMAKE_PROJECT_NAME}-config.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_PROJECT_NAME}-config.cmake - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME} + ${pfs_PACKAGE_CONFIG_IN} + ${pfs_PACKAGE_CONFIG_OUT} + INSTALL_DESTINATION ${pfs_PACKAGE_INSTALL_DESTINATION} +) + +install( + TARGETS ${CMAKE_PROJECT_NAME} + EXPORT ${pfs_EXPORT_NAME} +) + +install( + EXPORT ${pfs_EXPORT_NAME} + FILE ${pfs_PACKAGE_CONFIG} + DESTINATION ${pfs_PACKAGE_INSTALL_DESTINATION} ) -install(TARGETS ${CMAKE_PROJECT_NAME} EXPORT ${CMAKE_PROJECT_NAME}Targets) -install(EXPORT ${CMAKE_PROJECT_NAME}Targets - FILE ${CMAKE_PROJECT_NAME}-config.cmake - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CMAKE_PROJECT_NAME} +install( + DIRECTORY include/ + DESTINATION include ) -install(DIRECTORY include/ DESTINATION include) diff --git a/README.md b/README.md index 189810e..cea3cc5 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,19 @@ After that, just use `make` as always. - Add the contents of `/include` into your include directories. That's it, you are good to go. +### Use CMake's [`find_package()`](https://cmake.org/cmake/help/latest/command/find_package.html) + +After building the project, you can install it locally using `make install`. +In your project's CMake file, you can then add the following snippet, and CMake will handle the rest: +``` +find_package(pfs) +include_directories (${pfs_INCLUDE_DIRS}) +... +target_link_libraries ( pfs) +``` + +CMake generates an `install_manifest.txt` file to track all the created files, this will help you uninstall the library if you need to do so. + ## Features - Parsing system-wide information from files directly under `/procfs`. See `procfs.hpp` for all the supported files. diff --git a/cmake/pfs-config.cmake.in b/cmake/pfs-config.cmake.in index 2a66b1c..13b93c6 100644 --- a/cmake/pfs-config.cmake.in +++ b/cmake/pfs-config.cmake.in @@ -1,3 +1,2 @@ @PACKAGE_INIT@ -include("${CMAKE_CURRENT_LIST_DIR}/pfsTargets.cmake") -check_required_components(pfs) \ No newline at end of file +check_required_components(pfs)