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>])
取得 <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...
於 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> 尚未在列表中時,才將 <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> 的變數中。
如有必要,請使用 <exepath> 和 <dirs> 來解析非絕對 <file> 值 -- 但僅適用於非嵌入式項目。
可能的類型為
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