首页 > 解决方案 > 如何设置 CMAKE_MODULE_PATH 以在 CMake 中进行常规和外源构建?

问题描述

我的里面有这样一行CMakeLists.txt

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "cmake")

这样可以使用如下所示的目录树找到一些自定义库:

CMakeLists.txt
cmake/
|-- FindSomeLibrary.cmake
|-- FindAnotherLibrary.cmake

通常我像这样构建:

cmake .

哪个工作正常。但是,我想使用如下脚本提供调试和发布版本:

mkdir release
cd release
cmake -DCMAKE_BUILD_TYPE=Release ../

但是,现在它找不到 cmake 模块。

有没有办法设置CMAKE_MODULE_PATH它适用于源内和源外构建?

标签: cmake

解决方案


正如评论中所建议的:

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

并始终尝试设置相对于某个 CMAKE_* 目录的所有路径。这样你会错过很多错误。; )

作为CMAKE_MODULE_PATH一个列表,所以最好使用:

list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")

推荐阅读