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> 附加到清單變數 <list_var>。

IS_FILE_EXECUTABLE(<file> <result_var>)

如果 <file> 是二進位可執行檔,則在 <result_var> 中傳回 1,否則傳回 0。

GP_ITEM_DEFAULT_EMBEDDED_PATH(<item> <default_embedded_path_var>)

傳回當項目嵌入到套件中時,其他人應該參照該項目的路徑。

透過提供專案特定的 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