首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >注册表。使用CMake将外部库链接到项目

注册表。使用CMake将外部库链接到项目
EN

Stack Overflow用户
提问于 2017-06-21 23:37:46
回答 1查看 974关注 0票数 1

我正在尝试使用外部库构建一个项目,但是系统一直认为它需要使用usr/lib内部的库,而这个库已经坏了。我希望使用在以下地址中构建的库: /home/CMake-hdf5-1.8.18/build/HDF5-1.8.18-Linux/HDF_Group/HDF5/1.8.18/include.这是CMakeLists.txt。我想要的解决方案是#Add hdf5 library下面的两行。

代码语言:javascript
复制
cmake_minimum_required(VERSION 2.8.3)
project(scan_to_cloud_converter)

# List C++ dependencies on ros packages
set( ROS_CXX_DEPENDENCIES
  roscpp
  pcl_ros
  pcl_conversions)

# Find catkin and all required ROS components
find_package(catkin REQUIRED COMPONENTS ${ROS_CXX_DEPENDENCIES})
find_package(PCL REQUIRED QUIET)

# Set include directories
include_directories(include ${catkin_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS})

# Declare info that other packages need to import library generated here
catkin_package( )

#Create node
add_executable( scan_to_cloud_converter_node
src/scan_to_cloud_converter_node.cpp
src/scan_to_cloud_converter.cpp )

#Add hdf5 library
link_directories(/home/CMake-hdf5-1.8.18/build/HDF5-1.8.18-Linux/HDF_Group/HDF5/1.8.18/include)
target_link_libraries(scan_to_cloud_converter_node libhdf5)

# No need to link against pcl (using header only libraries)
target_link_libraries( scan_to_cloud_converter_node ${catkin_LIBRARIES})

add_dependencies(scan_to_cloud_converter_node ${catkin_EXPORTED_TARGETS})

#Install node
install(TARGETS scan_to_cloud_converter_node
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} )

然而,这是我仍然收到的错误消息:

代码语言:javascript
复制
make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/hdf5/serial/lib/libhdf5.so', needed by '/home/catkin_ws/devel/lib/scan_to_cloud_converter/scan_to_cloud_converter_node'.  Stop.

我研究过这个错误,因为它仍然在查找/usr/lib,并且没有libhdf5库,所以当符号链接断开时就会出现这个错误。那么,我如何让它改为查看该库的其他地址呢?如果能帮助我们消除这个错误,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-22 17:41:33

为了将cmake项目与hdf5链接起来,我建议使用cmake的find_package特性。

包括这行

代码语言:javascript
复制
find_package(HDF5)

CMakeLists.txt中。

然后,您可以使用target_link_libraries(your_lib ${HDF5_C_LIBRARIES})进行适当的链接。包含的目录存储在${HDF5_INCLUDE_DIRS}中。

现在,对于您的问题,即选择一个特定的HDF5位置,发出以下命令

代码语言:javascript
复制
export HDF5_ROOT=/home/CMake-hdf5-1.8.18/build/HDF5-1.8.18-Linux/HDF_Group/HD‌​F5/1.8.18

在发出cmake之前。你需要有一个清空的缓存才能正常工作:

代码语言:javascript
复制
rm -r CMakeCache.txt CMakeFiles
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44680563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档