Find_package不使用源代码库

时间:2016-06-20 13:55:16

标签: c++ makefile linker cmake aruco

我有一个从源代码安装的库。 它看起来很好,安装清单显示我需要安装所有文件:

/usr/local/lib/cmake/Findaruco.cmake
/usr/local/lib/pkgconfig/aruco-uninstalled.pc
/usr/local/lib/pkgconfig/aruco.pc
/usr/local/lib/libaruco.so.2.0.7
/usr/local/lib/libaruco.so.2.0
/usr/local/lib/libaruco.so
/usr/local/include/aruco/marker.h
/usr/local/include/aruco/markerdetector.h
/usr/local/include/aruco/dictionary.h
/usr/local/include/aruco/levmarq.h
/usr/local/include/aruco/markermap.h
/usr/local/include/aruco/cameraparameters.h
/usr/local/include/aruco/posetracker.h
/usr/local/include/aruco/exports.h
/usr/local/include/aruco/markerlabeler.h
/usr/local/include/aruco/cvdrawingutils.h
/usr/local/include/aruco/ar_omp.h
/usr/local/include/aruco/aruco.h
/usr/local/include/aruco/dictionary_based.h
/usr/local/include/aruco/svmmarkers.h
/usr/local/bin/aruco_tracker
/usr/local/bin/aruco_simple
/usr/local/bin/aruco_test
/usr/local/bin/aruco_print_marker
/usr/local/bin/aruco_print_dictionary
/usr/local/bin/aruco_markermap_pix2meters
/usr/local/bin/aruco_simple_markermap
/usr/local/bin/aruco_test_markermap
/usr/local/bin/aruco_calibration
/usr/local/bin/aruco_calibration_fromimages

我还可以在项目中包含我从该库中需要的标题;他们被发现了。

什么不起作用实际上是链接库。 我的cmakeLists有以下几行:

find_package(aruco REQUIRED)

我认为这就足够了,因为Findaruco.cmake文件就在 在/ usr / local / lib目录/ cmake的。但是,cmake无法找到该库。 我也注意到了 locate .so | grep aruco实际上并没有找到该库。它的输出是:

/usr/local/lib/libopencv_aruco.so
/usr/local/lib/libopencv_aruco.so.3.1
/usr/local/lib/libopencv_aruco.so.3.1.0

所以事情显然是错的。 我还注意到在安装时cmake告诉我以下内容(以及该库中的其他内容):

Removed runtime path from "/usr/local/lib/libaruco.so.2.0.7"

这与它有什么关系吗? 如果您需要查看库,可以找到它here on sourceforge。 没有它我就无法建立,我该如何让它发挥作用?

1 个答案:

答案 0 :(得分:0)

所以在特定路径中搜索cmake modules。我认为默认值是/usr/share/cmake/<version>/modules

您可以将cmake_module_path变量设置为您安装Findaruco cmake文件的目录,或将该模块移动到其他cmake文件所在的位置。

旁注:如果您尚未运行$ sudo updatedb,那么$ locate将不会显示您安装的新库,因为它尚未添加到数据库中以进行定位