GetPrerequisites

自版本 3.16 起不推荐使用: 请改用 file(GET_RUNTIME_DEPENDENCIES)

函数用于分析和列出可执行文件先决条件。

此模块可提供函数来列出可执行文件或共享库文件依赖的 .dll、.dylib 或 .so 文件(其先决条件)。

它使用不同的工具获取所需共享库文件列表

dumpbin (Windows)
objdump (MinGW on Windows)
ldd (Linux/Unix)
otool (Mac OSX)

3.16 版本的变更: 如果已设置,它将使用 CMAKE_OBJDUMP 指定的工具。

此模块提供以下函数

get_prerequisites
list_prerequisites
list_prerequisites_by_glob
gp_append_unique
is_file_executable
gp_item_default_embedded_path
  (projects can override with gp_item_default_embedded_path_override)
gp_resolve_item
  (projects can override with gp_resolve_item_override)
gp_resolved_file_type
  (projects can override with gp_resolved_file_type_override)
gp_file_type
GET_PREREQUISITES(<target> <prerequisites_var> <exclude_system> <recurse>
                  <exepath> <dirs> [<rpaths>])

获取 所需的共享库文件列表。名为 的变量中的列表在首次进入此函数时应为空。在退出时, 将包含所需的共享库文件列表。

是可执行文件的完整路径。 是要包含结果的 CMake 变量的名称。 必须为 0 或 1,表示是否包括或排除“系统”先决条件。如果将 设置为 1,则所有先决条件都将递归查找,如果设置为 0,则只列出直接先决条件。 是顶级可执行文件的路径,用于在 Mac 上替换 @executable_path。 是可能找到库的路径列表:当提供未带有任何路径信息的 时,将首先搜索这些路径。然后,还会搜索标准系统位置:PATH、Framework 位置、/usr/lib...

3.14 版本中已添加: 可以将变量 GET_PREREQUISITES_VERBOSE 设置为 true 以启用详细信息输出。

LIST_PREREQUISITES(<target> [<recurse> [<exclude_system> [<verbose>]]])

打印一条消息,列出 的先决条件。

是共享库或可执行 的名称,或共享库或可执行文件的完整路径。如果将 设置为 1,则所有先决条件都将递归查找,如果设置为 0,则只列出直接先决条件。 必须为 0 或 1,表示是否包括或排除“系统”先决条件。当 设置为 0 时,只会打印先决条件的完整路径名称,设置为 1 时将显示额外的信息。

LIST_PREREQUISITES_BY_GLOB(<glob_arg> <glob_exp>)

打印与全局模式匹配的共享库和可执行文件的先决条件。 是 GLOB 或 GLOB_RECURSE, 是与“file(GLOB”或“file(GLOB_RECURSE”一起用于检索匹配文件列表的全局模式表达式。如果匹配文件可执行,则列出其先决条件。

提供的任何其他(可选)参数都会作为 list_prerequisites 调用的可选参数传递。

GP_APPEND_UNIQUE(<list_var> <value>)

如果 尚未在列表中,则将 追加到列表变量

IS_FILE_EXECUTABLE(<file> <result_var>)

如果 是二进制可执行文件,则在 中返回 1,否则返回 0。

GP_ITEM_DEFAULT_EMBEDDED_PATH(<item> <default_embedded_path_var>)

当项目嵌入在 bundle 中时,返回其他人应按此路径引用此项的路径。

通过提供一个特定于项目的 gp_item_default_embedded_path_override 函数,按每个项目进行替代。

GP_RESOLVE_ITEM(<context> <item> <exepath> <dirs> <resolved_item_var>
                [<rpaths>])

将一个项目解析成一个已有的完整路径文件。

通过提供一个特定于项目的 gp_resolve_item_override 函数,按每个项目进行替代。

GP_RESOLVED_FILE_TYPE(<original_file> <file> <exepath> <dirs> <type_var>
                      [<rpaths>])

返回 相对于 的类型。一个名为 的变量会返回描述先决条件类型的字符串。

如果需要,使用 解析非绝对 值——但仅对于非嵌入项目。

可能的类型为

system
local
embedded
other

通过提供特定于项目的 gp_resolved_file_type_override 函数来根据每个项目进行覆盖。

GP_FILE_TYPE(<original_file> <file> <type_var>)

返回 相对于 的类型。一个名为 的变量会返回描述先决条件类型的字符串。

可能的类型为

system
local
embedded
other