日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

cartographer 編譯遇到 abseil的問題

作者:u010647296 更新時間: 2022-07-21 編程語言

1 abseil是做什么的

Abseil是C ++庫代碼的開源集合,旨在增強(qiáng)C ++標(biāo)準(zhǔn)庫。Abseil庫代碼是從Google自己的C ++代碼庫中收集的,已經(jīng)過廣泛測試并在生產(chǎn)中使用,并且與我們?nèi)粘>幋a工作中所依賴的代碼相同。

在某些情況下,Abseil提供了C ++標(biāo)準(zhǔn)中缺少的內(nèi)容;在其他情況下,Abseil提供了針對標(biāo)準(zhǔn)的替代方法,以滿足我們通過在Google代碼庫中的使用而發(fā)現(xiàn)的特殊需求。我們會在我們提供給您的庫代碼中清楚地表示這些情況。Abseil并不意味著要成為標(biāo)準(zhǔn)庫的競爭對手。
參見:如何評價 Google 開源其 C++ 基礎(chǔ)庫 Abseil?

2 在編譯的時候遇到abseil錯誤怎么辦

   multiple rules generate abseil
   等其他與abseil相關(guān)的錯誤

這里參照:cartographer中abseil庫依賴改造

cartographer中abseil的原生在線依賴

cartographer/blob/master/cmake/modules/FindAbseil.cmake#L66

  ExternalProject_Add(${ABSEIL_PROJECT_NAME}
    PREFIX ${ABSEIL_PROJECT_NAME}
    GIT_REPOSITORY   https://github.com/abseil/abseil-cpp.git
    GIT_TAG          7b46e1d31a6b08b1c6da2a13e7b151a20446fa07
    INSTALL_COMMAND  ""
    BUILD_COMMAND    ${CMAKE_COMMAND} --build "${ABSEIL_PROJECT_BUILD_DIR}"
    CMAKE_CACHE_ARGS "-DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON;-DBUILD_TESTING:BOOL=OFF;-DCMAKE_BUILD_TYPE:STRING=Release"
    BUILD_BYPRODUCTS "${ABSEIL_LIBRARY_PATH};${ABSEIL_DEPENDENT_LIBRARIES}"
  )

會在ros的工作空間下的build_isolated下下載編譯,并最后安裝在install_isolated, carto_grapher_ros會依賴它。

3 記錄 :

1 安裝abseil

	
set -o errexit
set -o verbose

git clone https://github.com/abseil/abseil-cpp.git
cd abseil-cpp
git checkout d902eb869bcfacc1bad14933ed9af4bed006d481
mkdir build
cd build
cmake -G Ninja \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
  -DCMAKE_INSTALL_PREFIX=/usr/local/stow/absl \
  ..
ninja
sudo ninja install
cd /usr/local/stow
sudo stow absl

2 cartographer中

/src/cartographer/CMakeLists.txt
CMakeList.txt 第1處:

find_package(Abseil REQUIRED) --> find_package(absl REQUIRED)
CMakeList.txt 第2處:#默認(rèn)的庫文件是 standalone_absl
target_link_libraries(${PROJECT_NAME} PUBLIC ${PROTOBUF_LIBRARY}
absl::base
absl::synchronization
absl::strings
absl::flat_hash_map
absl::numeric
absl::flags)

/src/cartographer/cartographer-config.cmake.in 1處

find_package(Abseil ${QUIET_OR_REQUIRED_OPTION}) Abseil 改為 absl

3 cartographer_ros中

/src/cartographer_ros/cartographer_ros/CMakeLists.txt

find_package(Abseil REQUIRED)  -->find_package(absl REQUIRED)

4 cartographer_rviz中

/src/cartographer_ros/cartographer_rviz/CMakeLists.txt

find_package(Abseil REQUIRED)  -->find_package(absl REQUIRED)

4

重新編譯

另外如果在package里面想要調(diào)用同workspace其他的package
1.在Cmakelists.txt 里面
	set(PACKAGE_DEPENDENCIES

		xxxx
  )
2.在package.xml中
<depend>xxxx</depend>

原文鏈接:https://blog.csdn.net/u010647296/article/details/125897259

欄目分類
最近更新