如何在CMake中设置CMAKE_MONKEY_PATH以进行常规和源代码外的构建?

wj8zmpe1  于 5个月前  发布在  其他
关注(0)|答案(2)|浏览(83)

我的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,使其同时适用于源代码内和源代码外的构建?

klh5stk1

klh5stk11#

正如评论中所建议的:

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")

hjqgdpho

hjqgdpho2#

只是为了记住我自己(在现代cmake 3.xx中):
1.如果需要include(some_file_module),请添加到CMAKE_MODULE_PATH
1.如果您需要find_package(package CONFIG REQUIRED)添加到CMAKE_PREFIX_PATH
举例说明:

list(APPEND CMAKE_PREFIX_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")

字符串

相关问题