言い換えられた質問
CMake が FindXXX.cmake モジュールを使用する順序を制御するにはどうすればよいですか?
私の正確な問題
たとえば、OpenSceneGraph には独自の FindZLIB が付属していますが、これは Cmake に付属の FindZLIB ほど優れていません。OSG に付属の FindZLIB モジュールは、ZLIB インストールを見つけることができません。ZLIB を CMAKE_INSTALL_PREFIX パスにインストールしました。
ビルド中に、cmake はこれについて警告します。
OSG はモジュール パスを独自のディレクトリに設定するため、FindPNG (CMake から) は OpenSceneGraph に付属の FindZLIB を不適切に使用します。そのため、ZLIB を見つけることができません。
どうすればこれを防ぐことができますか? ExternalProject_Add を呼び出して OpenSceneGraph を構築しています。cmakeポリシー(正確にはCMP0017)を設定すると修正される可能性があることを読みましたか?ExternalProject_Add を使用してそれを行う方法がわかりません。
詳細
これは、cmake (生成されたビジュアル スタジオ ソリューションから呼び出される) が OSG を構成およびビルドしようとしたときに関連する警告です。 /FindPNG.cmake:34 (find_package):
4> File C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules/FindPNG.cmake
4> includes E:/project/third-party/OpenSceneGraph/CMakeModules/FindZLIB.cmake
4> (found via CMAKE_MODULE_PATH) which shadows C:/Program Files (x86)/CMake
4> 2.8/share/cmake-2.8/Modules/FindZLIB.cmake. This may cause errors later on
4> .
4>
4> Policy CMP0017 is not set: Prefer files from the CMake module directory
4> when including from there. Run "cmake --help-policy CMP0017" for policy
4> details. Use the cmake_policy command to set the policy and suppress this
4> warning.