find_package的默认搜索路径是什么( )使用cmake时的功能?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了find_package的默认搜索路径是什么( )使用cmake时的功能?相关的知识,希望对你有一定的参考价值。

我还想知道当find_package(<package>)在Linux(Ubuntu)中找到<package>时设置的默认变量?

答案

将我的评论转化为答案

如果你必须将它融化在“最重要的一条”路径上,那么CMake's own module path将包含预装的Find...模块。

将CMake指向自定义路径的最重要的全局变量变量是CMAKE_MODULE_PATH

如果你想查看CMake在你的情况下搜索哪些目录,只需打电话

 cmake -D CMAKE_FIND_DEBUG_MODE=ON ..

整个“搜索算法”记录在find_package() command documentation中:

  1. 在cmake特定的缓存变量中指定的搜索路径。如果传递NO_CMAKE_PATH,则可以跳过此操作: CMAKE_PREFIX_PATH CMAKE_FRAMEWORK_PATH CMAKE_APPBUNDLE_PATH
  2. 在cmake特定的环境变量中指定的搜索路径。如果传递NO_CMAKE_ENVIRONMENT_PATH,则可以跳过此操作: <package>_DIR CMAKE_PREFIX_PATH CMAKE_FRAMEWORK_PATH CMAKE_APPBUNDLE_PATH
  3. 搜索HINTS选项指定的路径。应使用PATHS选项指定硬编码猜测。
  4. 搜索标准系统环境变量。如果传递NO_SYSTEM_ENVIRONMENT_PATH,则可以跳过此操作: PATH
  5. 搜索存储在CMake用户包注册表中的路径。如果传递NO_CMAKE_PACKAGE_REGISTRY或将CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY设置为TRUE,则可以跳过此操作。
  6. 搜索当前系统的Platform文件中定义的cmake变量。如果传递NO_CMAKE_SYSTEM_PATH,则可以跳过此操作: CMAKE_SYSTEM_PREFIX_PATH CMAKE_SYSTEM_FRAMEWORK_PATH CMAKE_SYSTEM_APPBUNDLE_PATH
  7. 搜索存储在CMake System Package Registry中的路径。如果传递NO_CMAKE_SYSTEM_PACKAGE_REGISTRY或将CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY设置为TRUE,则可以跳过此操作。
  8. 搜索PATHS选项指定的路径。这些通常是硬编码的猜测。

以上是关于find_package的默认搜索路径是什么( )使用cmake时的功能?的主要内容,如果未能解决你的问题,请参考以下文章

CMake基础教程(26)find_package搜索包完成库链接和头文件添加(module模式)

Cmake命令之find_package介绍

Cmake中find_package命令的搜索模式之配置模式(Config mode)

Cmake中find_package命令的搜索模式之模块模式(Module mode)

CMake基础教程(27)find_package搜索包完成库链接和头文件添加(config模式)

cmake:用于搜索mysql的FindMySQL.cmake及bug溯源及修复