Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ned14/ntkernel-error-category.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiall Douglas (s [underscore] sourceforge {at} nedprod [dot] com) <spamtrap@nedprod.com>2019-10-04 15:41:41 +0300
committerNiall Douglas (s [underscore] sourceforge {at} nedprod [dot] com) <spamtrap@nedprod.com>2019-10-04 15:41:41 +0300
commit2a6d4d320ee3df3921d6fd3562f0fc593b1823f3 (patch)
tree7b6b1227f3491c1ed88b7fdd863212902ff4d6e9
parentd6b8e9a544792518613d98668277be29dc322274 (diff)
Implement cmake install support.
-rw-r--r--CMakeLists.txt99
-rw-r--r--FixupInstall.cmake.in6
-rw-r--r--ProjectConfig.cmake.in4
-rw-r--r--include/ntkernel-error-category/config.hpp (renamed from include/config.hpp)0
-rw-r--r--include/ntkernel-error-category/detail/ntkernel-table.ipp (renamed from include/detail/ntkernel-table.ipp)0
-rw-r--r--include/ntkernel-error-category/detail/ntkernel_category_impl.ipp (renamed from include/detail/ntkernel_category_impl.ipp)0
-rw-r--r--include/ntkernel-error-category/ntkernel_category.hpp (renamed from include/ntkernel_category.hpp)0
-rw-r--r--src/ntkernel_category.cpp2
-rw-r--r--test/main.cpp2
9 files changed, 80 insertions, 33 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bf4ab41..fbfb983 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -2,10 +2,13 @@ cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
project(ntkernel-error-category VERSION 1.0 LANGUAGES CXX)
enable_testing()
-if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
- set(PROJECT_IS_DEPENDENCY OFF)
-else()
- set(PROJECT_IS_DEPENDENCY ON)
+include(GNUInstallDirs)
+if(NOT DEFINED PROJECT_IS_DEPENDENCY)
+ if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR)
+ set(PROJECT_IS_DEPENDENCY OFF)
+ else()
+ set(PROJECT_IS_DEPENDENCY ON)
+ endif()
endif()
if(WIN32)
@@ -18,65 +21,99 @@ if(WIN32)
)
endif()
-add_library(ntkernel-error-category_dl SHARED "src/ntkernel_category.cpp")
-target_compile_features(ntkernel-error-category_dl PUBLIC cxx_std_11)
-target_include_directories(ntkernel-error-category_dl INTERFACE "include")
-set_target_properties(ntkernel-error-category_dl PROPERTIES
+install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/include/ntkernel-error-category"
+ DESTINATION "include"
+)
+
+add_library(${PROJECT_NAME}_dl SHARED "src/ntkernel_category.cpp")
+target_compile_features(${PROJECT_NAME}_dl PUBLIC cxx_std_11)
+target_include_directories(${PROJECT_NAME}_dl PUBLIC
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
+ "$<INSTALL_INTERFACE:include>"
+)
+set_target_properties(${PROJECT_NAME}_dl PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
-add_library(ntkernel-error-category::dl ALIAS ntkernel-error-category_dl)
-install(FILES ntkernel-error-category_dl}
- DESTINATION "lib"
+add_library(${PROJECT_NAME}::dl ALIAS ${PROJECT_NAME}_dl)
+install(TARGETS ${PROJECT_NAME}_dl
+ EXPORT ${PROJECT_NAME}Exports
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)
-add_library(ntkernel-error-category_sl STATIC "src/ntkernel_category.cpp")
-target_compile_features(ntkernel-error-category_sl PUBLIC cxx_std_11)
-target_include_directories(ntkernel-error-category_sl INTERFACE "include")
-target_compile_definitions(ntkernel-error-category_sl PRIVATE NTKERNEL_ERROR_CATEGORY_STATIC)
-set_target_properties(ntkernel-error-category_sl PROPERTIES
+add_library(${PROJECT_NAME}_sl STATIC "src/ntkernel_category.cpp")
+target_compile_features(${PROJECT_NAME}_sl PUBLIC cxx_std_11)
+target_include_directories(${PROJECT_NAME}_sl PUBLIC
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
+ "$<INSTALL_INTERFACE:include>"
+)
+target_compile_definitions(${PROJECT_NAME}_sl PRIVATE NTKERNEL_ERROR_CATEGORY_STATIC)
+set_target_properties(${PROJECT_NAME}_sl PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
-add_library(ntkernel-error-category::sl ALIAS ntkernel-error-category_sl)
-install(FILES ntkernel-error-category_sl}
- DESTINATION "lib"
+add_library(${PROJECT_NAME}::sl ALIAS ${PROJECT_NAME}_sl)
+install(TARGETS ${PROJECT_NAME}_sl
+ EXPORT ${PROJECT_NAME}Exports
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)
-add_library(ntkernel-error-category_hl INTERFACE)
-target_compile_features(ntkernel-error-category_hl INTERFACE cxx_std_11)
-target_include_directories(ntkernel-error-category_hl INTERFACE "include")
-target_compile_definitions(ntkernel-error-category_hl INTERFACE
+add_library(${PROJECT_NAME}_hl INTERFACE)
+target_compile_features(${PROJECT_NAME}_hl INTERFACE cxx_std_11)
+target_include_directories(${PROJECT_NAME}_hl INTERFACE
+ "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
+ "$<INSTALL_INTERFACE:include>"
+)
+target_compile_definitions(${PROJECT_NAME}_hl INTERFACE
NTKERNEL_ERROR_CATEGORY_INLINE
NTKERNEL_ERROR_CATEGORY_STATIC
)
-add_library(ntkernel-error-category::hl ALIAS ntkernel-error-category_hl)
+add_library(${PROJECT_NAME}::hl ALIAS ${PROJECT_NAME}_hl)
+install(TARGETS ${PROJECT_NAME}_hl
+ EXPORT ${PROJECT_NAME}Exports
+ INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+)
-export(
- TARGETS ntkernel-error-category_dl ntkernel-error-category_sl ntkernel-error-category_hl
- FILE "NtKernelErrorCategoryTargets.cmake"
- EXPORT_LINK_INTERFACE_LIBRARIES
+configure_file(
+ "${CMAKE_CURRENT_LIST_DIR}/ProjectConfig.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+ @ONLY
+)
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
+)
+install(EXPORT ${PROJECT_NAME}Exports
+ NAMESPACE ${PROJECT_NAME}::
+ DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
)
+configure_file(
+ "${CMAKE_CURRENT_LIST_DIR}/FixupInstall.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}FixupInstall.cmake"
+ @ONLY
+)
+install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}FixupInstall.cmake")
+
if(NOT PROJECT_IS_DEPENDENCY)
add_executable(test-dl "test/main.cpp")
- target_link_libraries(test-dl PRIVATE ntkernel-error-category::dl)
+ target_link_libraries(test-dl PRIVATE ${PROJECT_NAME}::dl)
set_target_properties(test-dl PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
add_test(NAME test-dl COMMAND $<TARGET_FILE:test-dl>)
add_executable(test-sl "test/main.cpp")
- target_link_libraries(test-sl PRIVATE ntkernel-error-category::sl)
+ target_link_libraries(test-sl PRIVATE ${PROJECT_NAME}::sl)
set_target_properties(test-sl PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
add_test(NAME test-sl COMMAND $<TARGET_FILE:test-sl>)
add_executable(test-hl "test/main.cpp")
- target_link_libraries(test-hl PRIVATE ntkernel-error-category::hl)
+ target_link_libraries(test-hl PRIVATE ${PROJECT_NAME}::hl)
set_target_properties(test-hl PROPERTIES
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
diff --git a/FixupInstall.cmake.in b/FixupInstall.cmake.in
new file mode 100644
index 0000000..c784402
--- /dev/null
+++ b/FixupInstall.cmake.in
@@ -0,0 +1,6 @@
+file(READ "@CMAKE_BINARY_DIR@/CMakeFiles/Export/lib/cmake/@PROJECT_NAME@/@PROJECT_NAME@Exports.cmake" exportfile1)
+string(REGEX REPLACE "[^ :\"(;]+::([^_]+)_(hl|sl|dl)" "\\1::\\2" exportfile2 "${exportfile1}")
+if(NOT exportfile1 STREQUAL exportfile2)
+ file(WRITE "@CMAKE_BINARY_DIR@/CMakeFiles/Export/lib/cmake/@PROJECT_NAME@/@PROJECT_NAME@Exports.cmake" "${exportfile2}")
+ file(WRITE "$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/lib/cmake/@PROJECT_NAME@/@PROJECT_NAME@Exports.cmake" "${exportfile2}")
+endif()
diff --git a/ProjectConfig.cmake.in b/ProjectConfig.cmake.in
new file mode 100644
index 0000000..1e19007
--- /dev/null
+++ b/ProjectConfig.cmake.in
@@ -0,0 +1,4 @@
+include(FindPackageHandleStandardArgs)
+set(${CMAKE_FIND_PACKAGE_NAME}_CONFIG ${CMAKE_CURRENT_LIST_FILE})
+find_package_handle_standard_args(@PROJECT_NAME@ CONFIG_MODE)
+include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Exports.cmake")
diff --git a/include/config.hpp b/include/ntkernel-error-category/config.hpp
index be9cfd6..be9cfd6 100644
--- a/include/config.hpp
+++ b/include/ntkernel-error-category/config.hpp
diff --git a/include/detail/ntkernel-table.ipp b/include/ntkernel-error-category/detail/ntkernel-table.ipp
index 7eba580..7eba580 100644
--- a/include/detail/ntkernel-table.ipp
+++ b/include/ntkernel-error-category/detail/ntkernel-table.ipp
diff --git a/include/detail/ntkernel_category_impl.ipp b/include/ntkernel-error-category/detail/ntkernel_category_impl.ipp
index e9a7adf..e9a7adf 100644
--- a/include/detail/ntkernel_category_impl.ipp
+++ b/include/ntkernel-error-category/detail/ntkernel_category_impl.ipp
diff --git a/include/ntkernel_category.hpp b/include/ntkernel-error-category/ntkernel_category.hpp
index 4d6abb8..4d6abb8 100644
--- a/include/ntkernel_category.hpp
+++ b/include/ntkernel-error-category/ntkernel_category.hpp
diff --git a/src/ntkernel_category.cpp b/src/ntkernel_category.cpp
index dcf733b..3e41fdb 100644
--- a/src/ntkernel_category.cpp
+++ b/src/ntkernel_category.cpp
@@ -23,4 +23,4 @@ http://www.boost.org/LICENSE_1_0.txt)
*/
#define NTKERNEL_CATEGORY_SOURCE
-#include "../include/detail/ntkernel_category_impl.ipp"
+#include "ntkernel-error-category/detail/ntkernel_category_impl.ipp"
diff --git a/test/main.cpp b/test/main.cpp
index 101bb31..5916e58 100644
--- a/test/main.cpp
+++ b/test/main.cpp
@@ -22,7 +22,7 @@ Distributed under the Boost Software License, Version 1.0.
http://www.boost.org/LICENSE_1_0.txt)
*/
-#include "ntkernel_category.hpp"
+#include "ntkernel-error-category/ntkernel_category.hpp"
#include <iostream>
#include <string.h>