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