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

wj8zmpe1  于 2024-01-09  发布在  其他
关注(0)|答案(2)|浏览(268)

我的CMakeLists.txt中有这样一行

  1. set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "cmake")

字符串
这是为了让一些自定义库可以找到一个目录树,看起来像这样:

  1. CMakeLists.txt
  2. cmake/
  3. |-- FindSomeLibrary.cmake
  4. |-- FindAnotherLibrary.cmake


通常我会像这样构建:

  1. cmake .


但是,我想使用这样的脚本提供一个调试和发布版本:

  1. mkdir release
  2. cd release
  3. cmake -DCMAKE_BUILD_TYPE=Release ../


但是,现在它找不到cmake模块。
有没有一种方法可以设置CMAKE_MODULE_PATH,使其同时适用于源代码内和源代码外的构建?

klh5stk1

klh5stk11#

正如评论中所建议的:

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

字符串
并且总是尝试将所有路径设置为相对于某个CMAKE_* 目录。这样您将错过许多错误。;)
由于CMAKE_MODULE_PATH是一个列表,因此最好使用:用途:

  1. 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
举例说明:

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

字符串

相关问题