模組

使用模組

程式碼重用是軟體開發中一項有價值的技術,而 CMake 的設計宗旨便是支援它。允許 CMakeLists 檔案使用可重用的模組,讓整個社群得以分享可重用的程式碼片段。對於 CMake 來說,這些片段稱為 cmake-modules,並且可以在安裝目錄的 Modules 子目錄中找到。

模組的位置可以使用模組檔案的完整路徑來指定,也可以讓 CMake 自己尋找模組。CMake 會在 CMAKE_MODULE_PATH 指定的目錄中尋找模組;如果找不到,它會在 Modules 子目錄中尋找。這樣,專案就可以覆寫 CMake 提供的模組,並根據自身需求進行客製化。模組可以分為幾個主要類別

尋找模組

這些模組支援 find_package 命令,以確定軟體元素的所在位置,例如屬於給定套件的標頭檔或程式庫。不要直接包含它們。請使用 find_package 命令。每個模組都附帶文件,說明它找到的套件以及它在哪些變數中提供結果。

工具模組

工具模組只是放入檔案中的 CMake 命令片段;然後可以使用 include 命令將其包含到其他 CMakeLists 檔案中。例如,以下命令將包含來自 CMake 的 CheckTypeSize 模組,然後使用它定義的巨集。

include(CheckTypeSize)
check_type_size(long SIZEOF_LONG)

這些模組會測試系統,以提供有關目標平台或編譯器的資訊,例如浮點數的大小或對 ANSI C++ 串流的支援。許多此類模組的名稱都以 TestCheck 作為字首,例如 TestBigEndianCheckTypeSize。其中一些模組會嘗試編譯程式碼以確定正確的結果。在這些情況下,原始程式碼的名稱通常與模組相同,但副檔名為 .c.cxx。工具模組還提供以 CMake 語言實作的實用巨集和函式,適用於特定的常見用例。詳細資訊請參閱每個模組的文件。