diff --git a/.gitignore b/.gitignore
index d1f961a..89a36d9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
build
bazel-*
+/scripts/abseil-cpp/
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ef2fcb3..d70cc94 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -29,6 +29,8 @@ include("${PROJECT_SOURCE_DIR}/cmake/functions.cmake")
google_initialize_cartographer_project()
google_enable_testing()
+list(APPEND CMAKE_PREFIX_PATH "/usr/local/stow/absl")
+
find_package(absl REQUIRED)
set(BOOST_COMPONENTS iostreams)
if(WIN32)
@@ -268,6 +270,41 @@ target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC
${PROTOBUF_INCLUDE_DIR})
# TODO(hrapp): This should not explicitly list pthread and use
# PROTOBUF_LIBRARIES, but that failed on first try.
+
+# 函数来递归查找库文件路径
+function(get_library_paths target)
+ get_target_property(LINK_LIBS ${target} INTERFACE_LINK_LIBRARIES)
+ if(NOT LINK_LIBS)
+ message(WARNING "Target ${target} has no INTERFACE_LINK_LIBRARIES")
+ return()
+ endif()
+ foreach(lib IN LISTS LINK_LIBS)
+ if(TARGET ${lib})
+ get_target_property(TYPE ${lib} TYPE)
+ if(TYPE STREQUAL "INTERFACE_LIBRARY")
+ get_library_paths(${lib})
+ elseif(TYPE STREQUAL "STATIC_LIBRARY" OR TYPE STREQUAL "SHARED_LIBRARY" OR TYPE STREQUAL "MODULE_LIBRARY")
+ get_target_property(LIB_PATH ${lib} LOCATION)
+ if(LIB_PATH)
+ message(STATUS "Library ${lib} is located at ${LIB_PATH}")
+ else()
+ message(WARNING "Library ${lib} has no LOCATION property")
+ endif()
+ endif()
+ else()
+ if("${lib}" MATCHES "-NOTFOUND$")
+ message(WARNING "Library ${lib} is NOTFOUND")
+ else()
+ message(STATUS "Linked library: ${lib}")
+ endif()
+ endif()
+ endforeach()
+endfunction()
+
+
+# 获取absl::base目标的实际库文件路径
+get_library_paths(absl::base)
+
target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY}
absl::algorithm
absl::base
diff --git a/package.xml b/package.xml
index cabc557..8c9f120 100644
--- a/package.xml
+++ b/package.xml
@@ -43,7 +43,6 @@
libboost-iostreams-dev
eigen
- libabsl-dev
libcairo2-dev
libceres-dev
libgflags-dev