網(wǎng)站首頁 編程語言 正文
1 abseil是做什么的
Abseil是C ++庫代碼的開源集合,旨在增強C ++標準庫。Abseil庫代碼是從Google自己的C ++代碼庫中收集的,已經(jīng)過廣泛測試并在生產(chǎn)中使用,并且與我們?nèi)粘>幋a工作中所依賴的代碼相同。
在某些情況下,Abseil提供了C ++標準中缺少的內(nèi)容;在其他情況下,Abseil提供了針對標準的替代方法,以滿足我們通過在Google代碼庫中的使用而發(fā)現(xiàn)的特殊需求。我們會在我們提供給您的庫代碼中清楚地表示這些情況。Abseil并不意味著要成為標準庫的競爭對手。
參見:如何評價 Google 開源其 C++ 基礎庫 Abseil?
2 在編譯的時候遇到abseil錯誤怎么辦
multiple rules generate abseil
等其他與abseil相關的錯誤
這里參照: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處:#默認的庫文件是 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
相關推薦
- 2022-05-18 Python標準庫中的sys你了解嗎_python
- 2022-08-12 Go?內(nèi)聯(lián)優(yōu)化讓程序員愛不釋手_Golang
- 2022-08-05 EasyExcel 3.X 簡單寫入Excel文件數(shù)據(jù)
- 2022-07-13 Golang實現(xiàn)常見排序算法的示例代碼_Golang
- 2022-02-21 C語言圣誕樹的實現(xiàn)示例_C 語言
- 2023-05-09 Oracle中分割字符串的方法實例代碼_oracle
- 2022-09-15 windows中cmd下添加、刪除和修改靜態(tài)路由實現(xiàn)_DOS/BAT
- 2022-06-12 批處理命令批量復制文件并重命名的實現(xiàn)_DOS/BAT
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結構-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支