From 675d01f444b2fa2ff8f5695e1fb1a50c33b004c0 Mon Sep 17 00:00:00 2001 From: 7iwind <7wind@7iwind.cn> Date: Mon, 27 Jul 2026 00:40:30 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=AD=A3=E7=BC=BA=E5=A4=B1?= =?UTF-8?q?=E6=9E=84=E5=BB=BA=E5=B9=B3=E5=8F=B0=E7=9A=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CMakeLists.txt | 4 +++- cmake/DataRouterConfig.cmake.in | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4fdb40e..9afb7c7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,9 @@ option(DR_COMPILE_CHECK "Build compile-compatibility tests for each Cortex-M va set(DR_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/datarouter.c CACHE INTERNAL "") set(DR_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR} CACHE INTERNAL "") +# 预编译包使用者可用 find_package(DataRouter CONFIG) 从此路径加载 +set(DataRouter_CMAKE_CONFIG_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/cmake CACHE INTERNAL "") + # ── 编译兼容性矩阵 (仅在 host 编译器和 ARM GCC 均可用时生效) ── if(DR_COMPILE_CHECK) @@ -58,7 +61,6 @@ endif() add_library(DataRouter STATIC datarouter.c) target_include_directories(DataRouter PUBLIC $ - $ ) if(BUILD_EXAMPLES OR NOT DEFINED BUILD_EXAMPLES) diff --git a/cmake/DataRouterConfig.cmake.in b/cmake/DataRouterConfig.cmake.in index e160354..f0a7d80 100644 --- a/cmake/DataRouterConfig.cmake.in +++ b/cmake/DataRouterConfig.cmake.in @@ -1,11 +1,22 @@ @PACKAGE_INIT@ -set(DataRouter_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") -set(DataRouter_LIBRARY_DIR "@PACKAGE_LIB_INSTALL_DIR@") +get_filename_component(DataRouter_INCLUDE_DIR + "${CMAKE_CURRENT_LIST_DIR}/../../include" ABSOLUTE) +get_filename_component(DataRouter_LIBRARY_DIR + "${CMAKE_CURRENT_LIST_DIR}/../../lib" ABSOLUTE) include("${CMAKE_CURRENT_LIST_DIR}/DataRouterTargets.cmake" OPTIONAL) -if(NOT TARGET DataRouter::DataRouter) +# 无论 targets 文件是否加载,都覆盖 include 路径为正确值 +# (targets 文件中的 _IMPORT_PREFIX 在某些平台/工具链下可能计算异常) +if(TARGET DataRouter) + set_target_properties(DataRouter PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${DataRouter_INCLUDE_DIR}" + ) + if(NOT TARGET DataRouter::DataRouter) + add_library(DataRouter::DataRouter ALIAS DataRouter) + endif() +else() add_library(DataRouter::DataRouter STATIC IMPORTED) set_target_properties(DataRouter::DataRouter PROPERTIES IMPORTED_LOCATION "${DataRouter_LIBRARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}DataRouter${CMAKE_STATIC_LIBRARY_SUFFIX}" -- 2.54.0