我知道如果我希望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
个文件。
有什么想法吗?
答案 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
脚本的相关问题。