使用cmake时,find_package(<package>)函数的默认搜索路径是什么?

时间:2017-05-12 01:28:06

标签: cmake

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

1 个答案:

答案 0 :(得分:1)

将我的评论转化为答案

如果你必须在“最重要的一条”路径上将其融合,那么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.   
  3. 搜索特定于cmake的环境变量中指定的路径。如果传递NO_CMAKE_ENVIRONMENT_PATH,则可以跳过此步骤:

    <package>_DIR
    CMAKE_PREFIX_PATH
    CMAKE_FRAMEWORK_PATH
    CMAKE_APPBUNDLE_PATH
    
  4.   
  5. HINTS选项指定的搜索路径。应使用PATHS选项指定硬编码猜测。

  6.   
  7. 搜索标准系统环境变量。如果传递NO_SYSTEM_ENVIRONMENT_PATH,则可以跳过此步骤:

    PATH
    
  8.   
  9. 搜索存储在CMake用户包注册表中的路径。如果传递NO_CMAKE_PACKAGE_REGISTRY或将CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY设置为TRUE,则可以跳过此步骤。

  10.   
  11. 搜索当前系统的平台文件中定义的cmake变量。如果传递NO_CMAKE_SYSTEM_PATH,则可以跳过此步骤:

    CMAKE_SYSTEM_PREFIX_PATH
    CMAKE_SYSTEM_FRAMEWORK_PATH
    CMAKE_SYSTEM_APPBUNDLE_PATH
    
  12.   
  13. 搜索存储在CMake System Package Registry中的路径。如果传递NO_CMAKE_SYSTEM_PACKAGE_REGISTRY或将CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY设置为TRUE,则可以跳过此步骤。

  14.   
  15. PATHS选项指定的搜索路径。这些通常是硬编码的猜测。

  16.