プロジェクトのコンパイルを管理するために cmake を使用していますが、cmake を使用するのは初めてです。このツールは、必要なすべてのライブラリが特定のコンピューターにインストールされているかどうかを確認できるスクリプトと関数が多数あるため、非常に便利です。ただし、これらの一般的な sripts は特定のケースをカバーしていないか、特定のライブラリではまったく使用できない場合があります。私の質問は次のとおりです。
特定のヘッダー ファイル (hpp または h) がインクルード パスで利用可能かどうかを確認する正しい cmake スタイルの方法は何ですか?
理由:
最も簡単な方法は、おそらく CHECK_INCLUDE_FILE マクロを使用することです。たとえば、UnitTest++ ライブラリを使用したい場合は、次のように記述できます。
CHECK_INCLUDE_FILE_CXX("UnitTest++.h" HAVE_UNITTESTXX)
IF(NOT HAVE_UNITTESTXX)
message( FATAL_ERROR "UnitTest++ is not found" )
ENDIF()
残念ながら、この方法で実行すると、変数 HAVE_UNITTESTXX がキャッシュに格納されます。システムに UnitTest++ ライブラリをインストールすると、cmake はまだ UnitTest++.h がインストールされていないと文句を言います。キャッシュを手動で削除できますが、標準のパッケージ検索機能ではそれは必要ありません。このようにコードをアップグレードすることもできます
CHECK_INCLUDE_FILE_CXX("UnitTest++.h" HAVE_UNITTESTXX)
IF(NOT HAVE_UNITTESTXX)
UNSET(HAVE_UNITTESTXX CACHE)
message( FATAL_ERROR "UnitTest++ is not found" )
ENDIF()
このソリューションは機能しますが、見栄えがよくありません。このタスクを行うためのcmakeの方法を知りたいです。
よろしくお願いします!