4

プロジェクト内のすべてのヘッダーが独自にビルドできるかどうかを自動的にテストしたいと考えています。これは、ヘッダーにすべての依存関係が含まれているかどうかを確認するための一般的な手法です。残念ながら、これを達成する方法を見つけることができませんでした。多分誰かが助けることができますか?CMakeの初心者なので、自分でソリューションを設計できるかどうかわかりません。

うまくいけば、ソリューションで新しい.ccファイルを生成したり、外部スクリプトを実行したりする必要がなくなります。

4

1 に答える 1

1

標準の CMake モジュール関数CheckCXXSourceCompilesCheckCSourceCompilesを見てください。どちらの関数も、指定された (インライン) ソース コードが適切にコンパイルおよびリンクされているかどうかを確認します。ヘッダーが自己完結型かどうかをテストするには、ソース コードは、テストするヘッダー ファイルとメイン関数を含む 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 スクリプトで関数を使用することはできません。

于 2012-09-05T19:45:45.120 に答える