Find_package 无法使用源代码库
Find_package not working with library from source
我有一个从源代码安装的库。
看起来不错,安装清单显示我需要的所有文件都已安装:
/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
我还可以在我的项目中包含我需要的那个库中的 headers;他们被发现了。
不起作用的实际上是链接库。
我的 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。
没有它我就无法构建,我该如何让它工作?
所以cmake modules在特定路径中搜索。我相信默认值类似于 /usr/share/cmake/<version>/modules
您可以将 cmake_module_path 变量设置为安装 Findaruco cmake 文件的目录,或者将该模块移动到其他 cmake 文件所在的位置。
旁注:如果您还没有 运行 $ sudo updatedb
那么 $ locate
将不会显示您安装的新库,因为它还没有被添加到 locate[=14 的数据库中=]
我有一个从源代码安装的库。 看起来不错,安装清单显示我需要的所有文件都已安装:
/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
我还可以在我的项目中包含我需要的那个库中的 headers;他们被发现了。
不起作用的实际上是链接库。 我的 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。 没有它我就无法构建,我该如何让它工作?
所以cmake modules在特定路径中搜索。我相信默认值类似于 /usr/share/cmake/<version>/modules
您可以将 cmake_module_path 变量设置为安装 Findaruco cmake 文件的目录,或者将该模块移动到其他 cmake 文件所在的位置。
旁注:如果您还没有 运行 $ sudo updatedb
那么 $ locate
将不会显示您安装的新库,因为它还没有被添加到 locate[=14 的数据库中=]