FindDoxygen¶
Doxygen 是一個文件產生工具 (請參閱 https://doxygen.dev.org.tw)。此模組尋找 Doxygen 以及它支援的一些選用工具
dot
Graphviz
dot
公用程式,用於渲染各種圖形。mscgen
Message Chart Generator 公用程式,由 Doxygen 的
\msc
和\mscfile
命令使用。dia
Dia 圖表編輯器,由 Doxygen 的
\diafile
命令使用。
版本 3.9 新增: 這些工具在 find_package()
命令中作為組件提供。例如
# Require dot, treat the other components as optional
find_package(Doxygen
REQUIRED dot
OPTIONAL_COMPONENTS mscgen dia)
以下變數由此模組定義
- DOXYGEN_FOUND¶
如果找到
doxygen
執行檔,則為 True。
- DOXYGEN_VERSION¶
由
doxygen --version
報告的版本。
匯入目標¶
版本 3.9 新增。
此模組為 Doxygen 和每個找到的組件定義 IMPORTED
目標。這些可以用作自訂命令等的一部分,並且應優先於舊式 (且現在已棄用) 的變數,例如 DOXYGEN_EXECUTABLE
。如果可以找到其對應的執行檔,則會定義以下匯入目標 (組件匯入目標僅在請求該組件時定義)
Doxygen::doxygen
Doxygen::dot
Doxygen::mscgen
Doxygen::dia
函式¶
- doxygen_add_docs¶
版本 3.9 新增。
此函式旨在方便新增一個目標,用於使用 Doxygen 產生文件。它的目標是提供合理的預設值,以便專案通常只需提供輸入檔案和目錄,這就足以提供合理的結果。此函式支援自訂用於建置文件的 Doxygen 組態的能力。
doxygen_add_docs(targetName [filesOrDirs...] [ALL] [USE_STAMP_FILE] [WORKING_DIRECTORY dir] [COMMENT comment] [CONFIG_FILE filename])
此函式建構一個
Doxyfile
並定義一個自訂目標,該目標在產生的檔案上執行 Doxygen。列出的檔案和目錄用作產生的Doxyfile
的INPUT
,並且它們可以包含萬用字元。明確列出的任何檔案也將作為自訂目標的SOURCES
新增,因此它們將顯示在 IDE 專案的來源清單中。為了使相對輸入路徑按預期工作,預設情況下,Doxygen 命令的工作目錄將是目前的來源目錄 (即
CMAKE_CURRENT_SOURCE_DIR
)。可以使用WORKING_DIRECTORY
選項覆寫此設定,以變更用作相對基準點的目錄。另請注意,Doxygen 的預設行為是從產生的文件中剝離工作目錄中的相對路徑 (請參閱STRIP_FROM_PATH
Doxygen 組態選項 以取得詳細資訊)。如果提供,則選用的
comment
將作為add_custom_target()
命令的COMMENT
傳遞,該命令用於在內部建立自訂目標。版本 3.27 新增: 如果設定
CONFIG_FILE
,則將使用提供的完整路徑檔案作為 doxygen 組態檔版本 3.12 新增: 如果設定
ALL
,則目標將新增至預設建置目標。版本 3.16 新增: 如果設定
USE_STAMP_FILE
,則由此函式定義的自訂命令將在每次重新執行 doxygen 時,在目前的二進制目錄中建立一個名為<targetName>.stamp
的戳記檔案。如果存在此選項,則<filesOrDirs>
中的所有項目都必須是檔案 (即沒有目錄、符號連結或萬用字元),並且每個檔案都必須在呼叫doxygen_add_docs()
時存在。如果列出的任何項目在給定USE_STAMP_FILE
時遺失或不是檔案,則會引發錯誤。將在每個檔案上建立一個依賴項,以便只有在其中一個檔案更新時才重新執行 doxygen。如果沒有USE_STAMP_FILE
選項,則無論<filesOrDirs>
中列出的任何內容是否已變更,只要建置<targetName>
目標,就會始終重新執行 doxygen。可以通過在呼叫
doxygen_add_docs()
之前設定 CMake 變數來自訂產生的Doxyfile
的內容。任何名稱為DOXYGEN_<tag>
的變數,其值都將替換為Doxyfile
中對應的<tag>
組態選項。請參閱 Doxygen 文件 以取得支援的組態選項的完整清單。Doxygen 的某些預設值被覆寫,以便為 CMake 專案提供更適當的行為。除非變數在呼叫
doxygen_add_docs()
之前已經有一個值 (並註明一些例外情況),否則將明確設定以下每個變數- DOXYGEN_HAVE_DOT¶
如果請求了
dot
組件並且已找到,則設定為YES
,否則設定為NO
。任何現有的DOXYGEN_HAVE_DOT
值都會被忽略。
- DOXYGEN_DOT_MULTI_TARGETS¶
由此模組設定為
YES
(請注意,這需要 1.8.10 以上版本的dot
)。僅當DOXYGEN_HAVE_DOT
也設定為YES
時,此選項才有意義。
- DOXYGEN_GENERATE_LATEX¶
由此模組設定為
NO
。
- DOXYGEN_WARN_FORMAT¶
對於基於 Visual Studio 的產生器,這會設定為 Visual Studio IDE 識別的形式:
$file($line) : $text
。對於所有其他產生器,Doxygen 的預設值不會被覆寫。
- DOXYGEN_PROJECT_NAME¶
使用目前專案的名稱 (即
PROJECT_NAME
) 填寫。
- DOXYGEN_PROJECT_NUMBER¶
使用目前專案的版本 (即
PROJECT_VERSION
) 填寫。
- DOXYGEN_PROJECT_BRIEF¶
使用目前專案的描述 (即
PROJECT_DESCRIPTION
) 填寫。
- DOXYGEN_INPUT¶
專案不應設定此變數。它將使用傳遞給
doxygen_add_docs()
的檔案和目錄集填寫,從而提供與其他內建命令 (例如add_executable()
、add_library()
和add_custom_target()
) 一致的行為。如果專案設定了名為DOXYGEN_INPUT
的變數,則會忽略它並發出警告。
- DOXYGEN_RECURSIVE¶
由此模組設定為
YES
。
- DOXYGEN_EXCLUDE_PATTERNS¶
如果輸入集包含目錄,則此變數將指定用於從中排除檔案的模式。
doxygen_add_docs()
新增了以下模式,以確保 CMake 特定的檔案和目錄不包含在輸入中。如果專案設定了DOXYGEN_EXCLUDE_PATTERNS
,則這些內容會與這些額外模式合併,而不是替換它們*/.git/* */.svn/* */.hg/* */CMakeFiles/* */_CPack_Packages/* DartConfiguration.tcl CMakeLists.txt CMakeCache.txt
- DOXYGEN_OUTPUT_DIRECTORY¶
由此模組設定為
CMAKE_CURRENT_BINARY_DIR
。請注意,如果專案為此提供自己的值,並且它是相對路徑,則它將轉換為相對於目前二進制目錄的絕對路徑。這是必要的,因為 doxygen 通常會從來源樹中的目錄執行,以便相對來源路徑按預期工作。如果此目錄不存在,則會在執行 doxygen 命令之前以遞迴方式建立它。
要變更其中任何一個預設值或覆寫任何其他 Doxygen 組態選項,請在呼叫 doxygen_add_docs()
之前設定相關變數。例如
set(DOXYGEN_GENERATE_HTML NO) set(DOXYGEN_GENERATE_MAN YES) doxygen_add_docs( doxygen ${PROJECT_SOURCE_DIR} COMMENT "Generate man pages" )
許多 Doxygen 組態選項接受值清單,但 Doxygen 要求它們以空白字元分隔。CMake 變數將清單保存為字串,項目之間以分號分隔,因此需要執行轉換。doxygen_add_docs()
命令會專門檢查以下 Doxygen 組態選項,如果設定了它們相關聯的 CMake 變數,則會將其內容轉換為所需的格式。CMake 變數的名稱為 DOXYGEN_<name>
,用於此處指定的 Doxygen 設定。
|
|
如果以下單個值 Doxygen 選項包含至少一個空格,則會自動加上引號
|
|
版本 3.11 新增: 在某些情況下,可能不希望 doxygen_add_docs()
自動引用特定的組態選項,例如 ALIASES
,它可能需要包含自己的嵌入式引用。DOXYGEN_VERBATIM_VARS
變數可用於指定不應引用的 Doxygen 變數清單 (包括前導 DOXYGEN_
字首)。然後,專案負責確保這些變數的值在直接放置在 Doxygen 輸入檔案中時有意義。對於清單變數,清單項目仍然以空格分隔,只有自動引用被跳過。例如,以下允許 doxygen_add_docs()
將引用應用於 DOXYGEN_PROJECT_BRIEF
,但不應用於 DOXYGEN_ALIASES
清單中的每個項目 (括號語法 也可用於更輕鬆地處理嵌入式引號)
set(DOXYGEN_PROJECT_BRIEF "String with spaces")
set(DOXYGEN_ALIASES
[[somealias="@some_command param"]]
"anotherAlias=@foobar"
)
set(DOXYGEN_VERBATIM_VARS DOXYGEN_ALIASES)
產生的 Doxyfile
將包含以下行
PROJECT_BRIEF = "String with spaces"
ALIASES = somealias="@some_command param" anotherAlias=@foobar
已棄用的結果變數¶
自版本 3.9 起已棄用。
為了與先前版本的 CMake 相容,也定義了以下變數,但它們已棄用,不應再使用
- DOXYGEN_EXECUTABLE¶
doxygen
命令的路徑。如果專案需要直接引用doxygen
執行檔,則應改為使用Doxygen::doxygen
匯入目標。
- DOXYGEN_DOT_FOUND¶
如果找到
dot
執行檔,則為 True。
- DOXYGEN_DOT_EXECUTABLE¶
dot
命令的路徑。如果專案需要直接引用dot
執行檔,則應改為使用Doxygen::dot
匯入目標。
- DOXYGEN_DOT_PATH¶
包含
dot
執行檔的目錄路徑,如DOXYGEN_DOT_EXECUTABLE
中報告的那樣。即使在 Windows 上,路徑也可能具有正斜線,並且不適合直接替換到Doxyfile.in
範本中。如果您需要此值,請取得Doxygen::dot
目標的IMPORTED_LOCATION
屬性,並使用get_filename_component()
提取該路徑的目錄部分。您可能還需要考慮使用file(TO_NATIVE_PATH)
來準備 Doxygen 組態檔的路徑。
已棄用的提示變數¶
自版本 3.9 起已棄用。
- DOXYGEN_SKIP_DOT¶
此變數對於
find_package
的組件形式無效。在向後相容模式下 (即沒有組件清單),它可以防止 finder 模組搜尋 Graphviz 的dot
公用程式。