プロジェクト内のすべてのヘッダーが独自にビルドできるかどうかを自動的にテストしたいと考えています。これは、ヘッダーにすべての依存関係が含まれているかどうかを確認するための一般的な手法です。残念ながら、これを達成する方法を見つけることができませんでした。多分誰かが助けることができますか?CMakeの初心者なので、自分でソリューションを設計できるかどうかわかりません。
うまくいけば、ソリューションで新しい.cc
ファイルを生成したり、外部スクリプトを実行したりする必要がなくなります。
標準の CMake モジュール関数CheckCXXSourceCompilesとCheckCSourceCompilesを見てください。どちらの関数も、指定された (インライン) ソース コードが適切にコンパイルおよびリンクされているかどうかを確認します。ヘッダーが自己完結型かどうかをテストするには、ソース コードは、テストするヘッダー ファイルとメイン関数を含む include ステートメントで構成される必要があります。
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 スクリプトで関数を使用することはできません。