我知道,如果我想让CMake找到我的自定义FindBlabla.cmake
文件,我可以将指向它的路径放在CMAKE_MODULE_PATH
变量中。但是,如果有一个BlablaConfig.cmake
文件并想告诉CMake它的位置,该怎么办。我也知道我可以设置-DBlabla_DIR=/path/to/BlablaConfig.cmake
标志,我会得到我想要的。但是如果我有几个这样的配置文件呢?我希望避免为它们中的每一个设置*_DIR
变量。
更具体地说,我们可以考虑Qt配置文件的例子。如果我有Gentoo,并从Portage安装qt5,那么配置文件将被放在/usr/lib/cmake/Qt5*/Qt5*Config.cmake
中,默认情况下CMake将能够找到它。但是,如果我从源代码构建qt5并将其安装到/usr/local/Qt-some.version
,那么我必须告诉CMake在哪里可以找到这些配置文件,因为默认情况下/usr/local/Qt-some.version/lib/cmake/Qt5*/Qt5*.Config.cmake
文件对CMake不可见。
有什么想法吗?
设置CMAKE_PREFIX_PATH变量影响所有包:
set(CMAKE_PREFIX_PATH "/usr/local/Qt-some.version")
...
find_package(Qt5) # This will firstly consult "/usr/local/Qt-some.version" path.
另请参阅我对有关暗示到FindXXX.cmake
脚本的相关问题的回答。