CMake:如何覆盖CONFIG包的默认路径



我知道,如果我想让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脚本的相关问题的回答。

相关内容

  • 没有找到相关文章

最新更新