前言:
CMake给我们提供了find_package()命令用来查找依赖包,理想情况下,一句find_package()命令就能把一整个依赖包的头文件包含路径、库路径、库名字、版本号等情况都获取到,后续只管用就好了。但实际使用过程可能会出现这样那样的问题,因此需要我们对find_package这个强大的命令有个大概的理解。
在进行find_package()探索之前,先熟悉一下我们使用源码安装第三方库的流程。
源码安装流程
以OpenCV 3.4.20 为例,源码安装的流程为:
mkdir build
cd build
cmake ..
make -j8
sudo make install
其中将cmake .. 更换成以下指令,然后 make install 就可以指定第三方库的安装位置。
cmake -DCMAKE_INSTALL_PREFIX=安装路径 ..
在build文件夹中make之后,生成的库文件都在build文件夹内,通过make install 命令又安装到了系统根目录下。因此在安装完库后,如果不删除源码,系统中将会有两个地方存着库的文件(根目录和build文件)。
下面来看一下,指定安装位置和不指定安装位置,库都安装在了哪里。
一般安装库文件后关于库的相关内容会存放在4个子文件夹中,bin、include、lib、share。
<package_name>Config.cmake 文件的安装目录:
- 在指定安装目录的情况下,<package_name>Config.cmake一般会存放在share文件夹下。
- 默认不指定安装目录的情况下, <package_name>Config.cmake可能会被安装在
/usr/local/lib/cmake
或/usr/lib/cmake
目录下,具体取决于系统的配置和权限设置。- 使用命令行安装的情况下, <package_name>Config.cmake一般会被安装在
/usr/lib/x86_64-linux-gnu/cmake目录下
-----------------------------------------------------待更新-------------------------------------------------------------
参考文章:
“轻松搞定CMake”系列之find_package用法详解_/opt/ros/melodic/share/gazebo_dev/cmake/gazebo_dev-CSDN博客