1.在 cmake 的编译体系中,package 用来指代一个依赖库,包括一些头文件、动态库、静态库等等,在 CMakeFileLists.txt 中通过 find_package()
命令可以很轻易实现find_package命令对外部库进行查找。
2.cmake本身不进行库的搜索,也不会进行环境变量的设置。它仅仅是按照优先级顺序在指定的搜索路径进行查找Findxxx.cmake文件(toolchain.cmake)和xxxConfig.cmake文件(其中xxx代表库的名字,特别注意的是有大小写之分),这两个文件大体上是没有区别的,cmake能够找到这两个文件中的任何一个,我们都能成功使用该库,也就是我们可以用库的内置好了Cmake变量。当我们在cmake..命令之后,Cmake 会读取执行CMakeLists.txt中的代码,当执行find_package()这条命令后,Cmake 就会从某些路径中找这Findxxx.cmake文件或者xxxConfig.cmake文件,Cmake找到任意一个之后就会执行这个文件,然后这个文件执行后就会设置好一些Cmake变量。
3.find_pacakge(XXX REQUIRED)
会设置一系列变量。
XXX_FOUND 代表库是否查找成功
XXX_INCLUDE_DIRS or XXX_INCLUDES代表头文件的路径
XXX_LIBRARIES or XXX_LIBS代表库文件的路径
XXX_DEFINITIONS
一般常用的就是xxx_FOUND 、xxx_INCLUDE_DIRS、xxx_LIBS,分别代表是否找到库的标志、库的头文件路径、库文件路径。find_package()有两种模式:Module模式和Config模式,分别对应上面的Findxxx.cmake 和xxxConfig.cmake两个文件。cmake默认优先Module模式,而Config模式是备选项。