- clion中自己的编译环境(atmosphere)中,运行s2中terms_point.cc文件报错,缺少absl库。
解决:对于cmake编译构建的工程,主要还是在CMakeLists.txt文件中,所以缺少的absl库也可以在该文件中解决。
首先打开自己的工程下的CMakeLists.txt文件,查看最后的target变量

然后打开下载的s2源文件,在解压后的文件(s2 geometry-master)中,打开当前工程文件,点击查看当前工程文件下的CMAkeLists.txt文件,ctrl+f搜索absl,首先可以找到一个 find_package(absl REQUIRED) 命令,查找到这个包,然后继续搜索,找到target_link_libraries中,然后对比自己的工程目录下,发现缺少

absl::base
absl::btree
absl::config
absl::core_headers
absl::dynamic_annotations
absl::endian
absl::fixed_array
absl::flat_hash_map
absl::flat_hash_set
absl::hash
absl::inlined_vector
absl::int128
absl::log_severity
absl::memory
absl::span
absl::str_format
absl::strings
absl::type_traits
absl::utility
将其对应s2 geometry-master工程CMakeLists.txt中,在target_link_libraries的位置,粘贴到自己的工程CmakeLists.txt中,然后clion右上角会显示更新,点击更新,再在终端输入cmake .. make 构建,构建完成后,问题即可解决。
2、如何在编译的完成的环境中,找到某一函数对应的源码
在自己编译完成的环境中 .h文件对应的实现都已经编译为了动态库,是二进制文件,不能够直接打开查看,(如/home/he/atmosphere/cmake-build-debug/src的ec s2文件)。
所以要想查看,就要到下的源压缩包解压的文件中查找,以ecCodes为例,首先找到其对应的下载解压位置,在解压文件(/home/he/桌面/ecCodes/eccodes-2.25.0-Source)中打开终端,打开自己的example中的一个文件,然后ctrl+点击要查找的函数,就会自动弹出窗口,转到定义(无需再左侧的.c文件中一个个找),在ctrl+点击自己的要查找的函数,即可一直查找到函数的逐层实现。
在Clion使用s2库时遇到编译错误,因缺少absl库。通过在CMakeLists.txt文件中添加absl库依赖并更新配置后,成功解决。同时介绍了在编译环境中查找已链接库中特定函数源码的方法,通过跳转到定义功能快速定位源码。

2020

被折叠的 条评论
为什么被折叠?



