GetPrerequisites¶
Deprecated since version 3.16: 使用 file(GET_RUNTIME_DEPENDENCIES)
代替。
分析并列出可执行文件先决条件的功能。
此模块提供用于列出可执行文件或共享库文件所依赖的 .dll、.dylib 或 .so 文件的功能。(其先决条件。)
它使用各种工具来获取所需共享库文件的列表
dumpbin (Windows)
objdump (MinGW on Windows)
ldd (Linux/Unix)
otool (Mac OSX)
Changed in version 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>])
获取 <target> 所需的共享库文件列表。名为 <prerequisites_var> 的变量中的列表在首次进入此函数时应为空。退出时,<prerequisites_var> 将包含所需共享库文件的列表。
<target> 是可执行文件的完整路径。 <prerequisites_var> 是包含结果的 CMake 变量的名称。 <exclude_system> 必须为 0 或 1,指示是否包含或排除“系统”先决条件。如果 <recurse> 设置为 1,将递归查找所有先决条件;如果设置为 0,则仅列出直接先决条件。 <exepath> 是用于 Mac 上 @executable_path 替换的顶层可执行文件的路径。 <dirs> 是库可能存在的路径列表:当给定没有任何路径信息的目标时,首先搜索这些路径。然后还会搜索标准系统位置:PATH、Framework 位置、/usr/lib...
Added in version 3.14: 可以将变量 GET_PREREQUISITES_VERBOSE 设置为 true 以启用详细输出。
LIST_PREREQUISITES(<target> [<recurse> [<exclude_system> [<verbose>]]])
打印列出 <target> 的先决条件的消息。
<target> 是共享库或可执行目标的名称,或者是共享库或可执行文件的完整路径。如果 <recurse> 设置为 1,将递归查找所有先决条件;如果设置为 0,则仅列出直接先决条件。 <exclude_system> 必须为 0 或 1,指示是否包含或排除“系统”先决条件。如果 <verbose> 设置为 0,则仅打印先决条件的完整路径名;如果设置为 1,则将显示额外信息。
LIST_PREREQUISITES_BY_GLOB(<glob_arg> <glob_exp>)
打印与 globbing 模式匹配的共享库和可执行文件的先决条件。 <glob_arg> 是 GLOB 或 GLOB_RECURSE,<glob_exp> 是与 “file(GLOB” 或 “file(GLOB_RECURSE” 一起使用的 globbing 表达式,用于检索匹配的文件列表。如果匹配的文件是可执行文件,则列出其先决条件。
提供的任何其他(可选)参数都将作为可选参数传递给 list_prerequisites 调用。
GP_APPEND_UNIQUE(<list_var> <value>)
仅当列表中尚不存在值时,才将 <value> 附加到列表变量 <list_var>。
IS_FILE_EXECUTABLE(<file> <result_var>)
如果 <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>])
返回 <file> 相对于 <original_file> 的类型。描述先决条件类型的字符串在名为 <type_var> 的变量中返回。
如果需要解析非绝对 <file> 值,则使用 <exepath> 和 <dirs> -- 但仅适用于非嵌入项目。
可能的类型是
system
local
embedded
other
通过提供项目特定的 gp_resolved_file_type_override 函数,在每个项目的基础上进行覆盖。
GP_FILE_TYPE(<original_file> <file> <type_var>)
返回 <file> 相对于 <original_file> 的类型。描述先决条件类型的字符串在名为 <type_var> 的变量中返回。
可能的类型是
system
local
embedded
other