CMakeGraphVizOptions

CMake 內建的 Graphviz 支援。

產生 Graphviz 檔案

CMake 可以產生 Graphviz 檔案,顯示專案中目標之間的相依性,以及連結的外部函式庫。

當使用 --graphviz=foo.dot 選項執行 CMake 時,它會產生

  • 一個 foo.dot 檔案,顯示專案中的所有相依性

  • 每個目標一個 foo.dot.<target> 檔案,顯示它依賴的其他目標

  • 每個目標一個 foo.dot.<target>.dependers 檔案,顯示哪些其他目標依賴它

這些 .dot 檔案可以使用 Graphviz 套件中的 dot 命令轉換為圖像

dot -Tpng -o foo.png foo.dot

Added in version 3.10: 不同的相依性類型 PUBLICINTERFACEPRIVATE 以實線、虛線和點線邊緣表示。

Graphviz 支援的特定變數

產生的圖可能非常龐大。可以使用 CMakeGraphVizOptions.cmake 檔案控制產生圖的外觀和內容。此檔案首先在 CMAKE_BINARY_DIR 中搜尋,然後在 CMAKE_SOURCE_DIR 中搜尋。如果找到,則使用其中設定的變數來調整產生 Graphviz 檔案的選項。

GRAPHVIZ_GRAPH_NAME

圖的名稱。

GRAPHVIZ_GRAPH_HEADER

寫在 Graphviz 檔案頂部的標頭。

  • 必要性:否

  • 預設值:"node [ fontsize = "12" ];"

GRAPHVIZ_NODE_PREFIX

Graphviz 檔案中每個節點的前綴。

  • 必要性:否

  • 預設值:"node"

GRAPHVIZ_EXECUTABLES

設定為 FALSE 以從產生的圖中排除執行檔。

  • 必要性:否

  • 預設值:TRUE

GRAPHVIZ_STATIC_LIBS

設定為 FALSE 以從產生的圖中排除靜態函式庫。

  • 必要性:否

  • 預設值:TRUE

GRAPHVIZ_SHARED_LIBS

設定為 FALSE 以從產生的圖中排除共享函式庫。

  • 必要性:否

  • 預設值:TRUE

GRAPHVIZ_MODULE_LIBS

設定為 FALSE 以從產生的圖中排除模組函式庫。

  • 必要性:否

  • 預設值:TRUE

GRAPHVIZ_INTERFACE_LIBS

設定為 FALSE 以從產生的圖中排除介面函式庫。

  • 必要性:否

  • 預設值:TRUE

GRAPHVIZ_OBJECT_LIBS

設定為 FALSE 以從產生的圖中排除物件函式庫。

  • 必要性:否

  • 預設值:TRUE

GRAPHVIZ_UNKNOWN_LIBS

設定為 FALSE 以從產生的圖中排除未知函式庫。

  • 必要性:否

  • 預設值:TRUE

GRAPHVIZ_EXTERNAL_LIBS

設定為 FALSE 以從產生的圖中排除外部函式庫。

  • 必要性:否

  • 預設值:TRUE

GRAPHVIZ_CUSTOM_TARGETS

設定為 TRUE 以在產生的圖中包含自訂目標。

  • 必要性:否

  • 預設值:FALSE

GRAPHVIZ_IGNORE_TARGETS

要從產生的圖中排除的目標名稱的正規表示式清單。

  • 必要性:否

  • 預設值:空

GRAPHVIZ_GENERATE_PER_TARGET

設定為 FALSE 以不產生每個目標的圖 foo.dot.<target>

  • 必要性:否

  • 預設值:TRUE

GRAPHVIZ_GENERATE_DEPENDERS

設定為 FALSE 以不產生依賴者圖 foo.dot.<target>.dependers

  • 必要性:否

  • 預設值:TRUE