diff --git a/CMakeLists.txt b/CMakeLists.txt index 615739c..4fdb40e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.10) -project(DataRouter C) +project(DataRouter VERSION 1.1.0 LANGUAGES C) set(CMAKE_C_STANDARD 11) @@ -56,7 +56,10 @@ endif() # ── 常规库构建 ──────────────────────────────────────────────── add_library(DataRouter STATIC datarouter.c) -target_include_directories(DataRouter PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(DataRouter PUBLIC + $ + $ +) if(BUILD_EXAMPLES OR NOT DEFINED BUILD_EXAMPLES) add_executable(example example.c) @@ -73,10 +76,47 @@ endif() # ── 安装规则(用于打包发布) ───────────────────────────── include(GNUInstallDirs) -install(TARGETS DataRouter ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +include(CMakePackageConfigHelpers) + +set(DataRouter_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/DataRouter") + +install(TARGETS DataRouter + EXPORT DataRouterTargets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/datarouter.h ${CMAKE_CURRENT_SOURCE_DIR}/datarouter_config.h ${CMAKE_CURRENT_SOURCE_DIR}/datarouter_config_template.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) + +# ── CMake 包配置文件(find_package(DataRouter) 用) ──── + +set(PACKAGE_INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}) +set(PACKAGE_LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}) + +configure_package_config_file( + ${CMAKE_CURRENT_SOURCE_DIR}/cmake/DataRouterConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/DataRouterConfig.cmake + INSTALL_DESTINATION ${DataRouter_INSTALL_CMAKEDIR} + PATH_VARS PACKAGE_INCLUDE_INSTALL_DIR PACKAGE_LIB_INSTALL_DIR +) + +write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/DataRouterConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion +) + +install(EXPORT DataRouterTargets + FILE DataRouterTargets.cmake + DESTINATION ${DataRouter_INSTALL_CMAKEDIR} +) + +install(FILES + ${CMAKE_CURRENT_BINARY_DIR}/DataRouterConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/DataRouterConfigVersion.cmake + DESTINATION ${DataRouter_INSTALL_CMAKEDIR} +)