CMakeGraphVizOptions

CMake 的內建 Graphviz 支援。

產生 Graphviz 檔案

CMake 可以產生 Graphviz 檔案,顯示專案中目標之間的依賴關係,以及所連結的外部程式庫。

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

  • 一個 foo.dot 檔案,顯示專案中的所有依賴關係

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

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

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

dot -Tpng -o foo.png foo.dot

在 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.<目標>

  • 必要:否

  • 預設值:TRUE

GRAPHVIZ_GENERATE_DEPENDERS

設定為 FALSE 可不產生依賴者圖形 foo.dot.<目標>.dependers

  • 必要:否

  • 預設值:TRUE