From cfebea3b7473211fbeaa75708857a6014f6880ea Mon Sep 17 00:00:00 2001 From: Pcornat Date: Wed, 28 May 2025 23:00:38 +0200 Subject: [PATCH] install procedure and exporting targets --- CMakeLists.txt | 33 +++++++++++++++++++++++++++++++++ Config.cmake.in | 12 ++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 Config.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 8bde1cf..8191621 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,8 @@ cmake_minimum_required(VERSION 4.0) project(WindowGlfwGlLib CXX C) +include(GNUInstallDirs) +include(CMakePackageConfigHelpers) include(CheckIPOSupported) check_ipo_supported(RESULT IS_IPO_SUPPORTED OUTPUT IPO_OUTPUT_VERBOSE) @@ -54,6 +56,10 @@ endif () add_library(${PROJECT_NAME} SHARED window.cpp window.hpp basic_data.hpp) target_precompile_headers(${PROJECT_NAME} PUBLIC window.hpp basic_data.hpp) +target_include_directories(${PROJECT_NAME} + PUBLIC $ + INTERFACE $ +) target_compile_definitions(${PROJECT_NAME} PUBLIC GLFW_INCLUDE_NONE PRIVATE $<$,$>:_GLIBCXX_DEBUG>) target_compile_options(${PROJECT_NAME} PUBLIC ${COMPILE_FLAGS} $<$:${COMPILE_OPTIMIZED_FLAGS}>) target_link_options(${PROJECT_NAME} PUBLIC ${LINKER_OPTIONS} $<$:${LINKER_OPTIMIZED_OPTIONS}>) @@ -65,3 +71,30 @@ if (IS_IPO_SUPPORTED) else () message(WARNING "IPO is not supported: ${IPO_OUTPUT_VERBOSE}") endif () + +install(TARGETS ${PROJECT_NAME} + EXPORT windowGlfwGlLibTargets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + INCLUDES DESTINATION include + PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/windowGlfwGlLibTargets" +) + +install(EXPORT windowGlfwGlLibTargets + FILE windowGlfwGlLibTargets.cmake + NAMESPACE windowGlfwGlLibTargets:: + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/windowGlfwGlLibTargets +) + +configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in + "${CMAKE_CURRENT_BINARY_DIR}/windowGlfwGlLibTargetsConfig.cmake" + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/windowGlfwGlLibTargets +) + +install(FILES window.hpp basic_data.hpp DESTINATION include) + +install(FILES + "${CMAKE_CURRENT_BINARY_DIR}/windowGlfwGlLibTargetsConfig.cmake" + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/windowGlfwGlLibTargets +) diff --git a/Config.cmake.in b/Config.cmake.in new file mode 100644 index 0000000..a8b2728 --- /dev/null +++ b/Config.cmake.in @@ -0,0 +1,12 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/windowGlfwGlLibTargets.cmake") +include(CMakeFindDependencyMacro) +find_dependency(OpenGL REQUIRED) +find_dependency(GLEW REQUIRED) +find_dependency(glfw3 REQUIRED) +find_dependency(PkgConfig REQUIRED) + +pkg_check_modules(Jemalloc REQUIRED IMPORTED_TARGET GLOBAL jemalloc) + +check_required_components(windowGlfwGlLib) \ No newline at end of file