cmake:find_file、find_library、find_path、find_program

叁歲伎倆 2022-10-12 00:42 329阅读 0赞

find_file

  1. find_file (<VAR> name1 [path1 path2 ...])
  2. find_file (
  3. <VAR>
  4. name | NAMES name1 [name2 ...]
  5. [HINTS [path | ENV var]... ]
  6. [PATHS [path | ENV var]... ]
  7. [PATH_SUFFIXES suffix1 [suffix2 ...]]
  8. [DOC "cache documentation string"]
  9. [NO_CACHE]
  10. [REQUIRED]
  11. [NO_DEFAULT_PATH]
  12. [NO_PACKAGE_ROOT_PATH]
  13. [NO_CMAKE_PATH]
  14. [NO_CMAKE_ENVIRONMENT_PATH]
  15. [NO_SYSTEM_ENVIRONMENT_PATH]
  16. [NO_CMAKE_SYSTEM_PATH]
  17. [CMAKE_FIND_ROOT_PATH_BOTH |
  18. ONLY_CMAKE_FIND_ROOT_PATH |
  19. NO_CMAKE_FIND_ROOT_PATH]
  20. )
  • 该命令用于查找指定文件的完整路径
  • 创建一个名为< VAR >的缓存条目(如果指定了NO_CACHE,则是一个普通变量)来存储此命令的结果。

    • 如果找到文件的完整路径,则结果存储在变量中,并且搜索不会重复,除非该变量被清除。
    • 如果没有找到,结果将是< VAR >-NOTFOUND。

选项包括:

  • NAMES

    • 为文件的完整路径指定一个或多个可能的名称。
    • 当使用此方法指定带有或不带有版本后缀的名称时,我们建议首先指定未版本控制的名称,以便在发行版提供的包之前找到本地构建的包。
  • HINTS, PATHS

    • 除默认位置外,指定要搜索的目录。
    • ENV var子选项从系统环境变量中读取路径。
  • PATH_SUFFIXES

    • 在每个目录位置下面指定要检查的其他子目录。
  • DOC:

    • 指定< VAR>缓存项的文档字符串。
  • NO_CACHE

    • 3.21新版功能。
    • 搜索结果将存储在一个普通变量中,而不是缓存项中。
    • 注意,如果在调用之前已经设置了变量(作为普通变量或缓存变量),则不会进行搜索。
    • 警告:应该谨慎使用此选项,因为它可能会大大增加重复配置步骤的成本。
  • REQUIRED

    • 3.18新版功能。
    • 如果没有找到任何东西,则停止处理并给出错误消息,否则下次用相同的变量调用find_file时将再次尝试搜索。
  • NO_DEFAULT_PATH :

    • 如果指定了NO_DEFAULT_PATH,则不会向搜索添加其他路径。
    • 如果没有指定NO_DEFAULT_PATH,搜索过程如下:

find_library

  1. find_library (<VAR> name1 [path1 path2 ...])
  2. find_library (
  3. <VAR>
  4. name | NAMES name1 [name2 ...] [NAMES_PER_DIR]
  5. [HINTS [path | ENV var]... ]
  6. [PATHS [path | ENV var]... ]
  7. [PATH_SUFFIXES suffix1 [suffix2 ...]]
  8. [DOC "cache documentation string"]
  9. [NO_CACHE]
  10. [REQUIRED]
  11. [NO_DEFAULT_PATH]
  12. [NO_PACKAGE_ROOT_PATH]
  13. [NO_CMAKE_PATH]
  14. [NO_CMAKE_ENVIRONMENT_PATH]
  15. [NO_SYSTEM_ENVIRONMENT_PATH]
  16. [NO_CMAKE_SYSTEM_PATH]
  17. [CMAKE_FIND_ROOT_PATH_BOTH |
  18. ONLY_CMAKE_FIND_ROOT_PATH |
  19. NO_CMAKE_FIND_ROOT_PATH]
  20. )

此命令用于查找库。创建一个名为< VAR >的缓存条目(如果指定了NO_CACHE,则是一个普通变量)来存储此命令的结果。如果找到库,则结果存储在变量中,并且搜索不会重复,除非该变量被清除。如果没有找到,结果将是< VAR >-NOTFOUND。

选项包括:

  • NAMES

    • 为库指定一个或多个可能的名称。
    • 当使用此方法指定带有或不带有版本后缀的名称时,我们建议首先指定未版本控制的名称,以便在发行版提供的包之前找到本地构建的包

find_path

  1. find_path (<VAR> name1 [path1 path2 ...])
  2. find_path (
  3. <VAR>
  4. name | NAMES name1 [name2 ...]
  5. [HINTS [path | ENV var]... ]
  6. [PATHS [path | ENV var]... ]
  7. [PATH_SUFFIXES suffix1 [suffix2 ...]]
  8. [DOC "cache documentation string"]
  9. [NO_CACHE]
  10. [REQUIRED]
  11. [NO_DEFAULT_PATH]
  12. [NO_PACKAGE_ROOT_PATH]
  13. [NO_CMAKE_PATH]
  14. [NO_CMAKE_ENVIRONMENT_PATH]
  15. [NO_SYSTEM_ENVIRONMENT_PATH]
  16. [NO_CMAKE_SYSTEM_PATH]
  17. [CMAKE_FIND_ROOT_PATH_BOTH |
  18. ONLY_CMAKE_FIND_ROOT_PATH |
  19. NO_CMAKE_FIND_ROOT_PATH]
  20. )

该命令用于查找包含命名文件的目录。创建一个名为< VAR >的缓存条目(如果指定了NO_CACHE,则是一个普通变量)来存储此命令的结果。如果找到目录中的文件,结果将存储在变量中,并且搜索将不会重复,除非该变量被清除。如果没有找到,结果将是< VAR >-NOTFOUND。

find_program

  1. find_program (<VAR> name1 [path1 path2 ...])
  2. find_program (
  3. <VAR>
  4. name | NAMES name1 [name2 ...] [NAMES_PER_DIR]
  5. [HINTS [path | ENV var]... ]
  6. [PATHS [path | ENV var]... ]
  7. [PATH_SUFFIXES suffix1 [suffix2 ...]]
  8. [DOC "cache documentation string"]
  9. [NO_CACHE]
  10. [REQUIRED]
  11. [NO_DEFAULT_PATH]
  12. [NO_PACKAGE_ROOT_PATH]
  13. [NO_CMAKE_PATH]
  14. [NO_CMAKE_ENVIRONMENT_PATH]
  15. [NO_SYSTEM_ENVIRONMENT_PATH]
  16. [NO_CMAKE_SYSTEM_PATH]
  17. [CMAKE_FIND_ROOT_PATH_BOTH |
  18. ONLY_CMAKE_FIND_ROOT_PATH |
  19. NO_CMAKE_FIND_ROOT_PATH]
  20. )

该命令用于查找程序。创建一个名为< VAR >的缓存条目(如果指定了NO_CACHE,则是一个普通变量)来存储此命令的结果。如果找到该程序,则结果存储在该变量中,并且搜索不会重复,除非该变量被清除。如果没有找到,结果将是< VAR >-NOTFOUND。

发表评论

表情:
评论列表 (有 0 条评论,329人围观)

还没有评论,来说两句吧...

相关阅读