改写的问题
如何控制 CMake 使用 FindXXX.cmake 模块的顺序?
我的确切问题
比如OpenSceneGraph自带的FindZLIB,不如Cmake自带的FindZLIB。OSG自带的FindZLIB模块找不到我安装的ZLIB。我在 CMAKE_INSTALL_PREFIX 路径中安装了 ZLIB。
在构建期间,cmake 会警告我这一点。
OSG 将模块路径设置为它自己的目录,因此 FindPNG(来自 CMake)不正确地使用了 FindZLIB OpenSceneGraph 附带的。因此,它无法找到 ZLIB。
我怎样才能防止这种情况发生?我正在通过调用 ExternalProject_Add 来构建 OpenSceneGraph。我已经阅读了设置 cmake 策略(准确地说是 CMP0017)可能会解决它吗?我不知道如何通过 ExternalProject_Add 做到这一点。
更多细节
这是当 cmake(从生成的 Visual Studio 解决方案调用)尝试配置和构建 OSG 时的相关警告: 4> CMake 警告(dev)在 C:/Program Files (x86)/CMake 2.8/share/cmake-2.8/Modules /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.