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

时间:2017-11-10 11:11:51

标签: cmake qt5

我知道如果我希望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在哪里找到这些配置文件,因为默认情况下CMake看不到/usr/local/Qt-some.version/lib/cmake/Qt5*/Qt5*.Config.cmake个文件。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

设置 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.

另请参阅my answer有关提示FindXXX.cmake脚本的相关问题。