簡體   English   中英

如何測試項目中的所有標題是否都是CMake自包含的?

[英]How to test if all headers in the project are self-contained with CMake?

我想自動測試項目中的所有頭文件是否都可以自己構建。 這是檢查標頭是否包含所有依賴關系的常用技術。 不幸的是我無法找到如何實現這一目標。 也許有人可以幫忙? 作為CMake新手,我不確定我是否可以自己設計解決方案。

希望解決方案不需要生成任何新的.cc文件或運行任何外部腳本。

看看標准的CMake模塊函數CheckCXXSourceCompilesCheckCSourceCompiles 這兩個函數檢查給定(內聯)源代碼是否正確編譯和鏈接。 要測試標頭是否是自包含的,源代碼需要包含一個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_compilescheck_c_source_compiles都只能在CMake配置時運行,這可能不是你想要的。

由於這兩個函數都使用底層CMake命令try_compile (不可編寫腳本),因此無法在生成的CMake腳本中使用這些函數,該腳本在構建時作為自定義目標運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM