[英]How to test if all headers in the project are self-contained with CMake?
我想自動測試項目中的所有頭文件是否都可以自己構建。 這是檢查標頭是否包含所有依賴關系的常用技術。 不幸的是我無法找到如何實現這一目標。 也許有人可以幫忙? 作為CMake新手,我不確定我是否可以自己設計解決方案。
希望解決方案不需要生成任何新的.cc
文件或運行任何外部腳本。
看看標准的CMake模塊函數CheckCXXSourceCompiles和CheckCSourceCompiles 。 這兩個函數檢查給定(內聯)源代碼是否正確編譯和鏈接。 要測試標頭是否是自包含的,源代碼需要包含一個include語句,該語句包含要測試的頭文件和一個main函數:
include (CheckCXXSourceCompiles)
set (CMAKE_REQUIRED_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}")
check_cxx_source_compiles(
"#include \"file.h\"
int main() { return 0;}" File_H_IsSelfContained)
message ("File_H_IsSelfContained: ${File_H_IsSelfContained}")
check_cxx_source_compiles
和check_c_source_compiles
都只能在CMake配置時運行,這可能不是你想要的。
由於這兩個函數都使用底層CMake命令try_compile
(不可編寫腳本),因此無法在生成的CMake腳本中使用這些函數,該腳本在構建時作為自定義目標運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.