CMake忽略CMAKE_MODULE_PATH

时间:2019-12-13 16:30:03

标签: cmake include

我无法让CMake的intArr语句识别include()。我希望做这样的事情:

CMAKE_MODULE_PATH

具有这种样式的目录树:

list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
include(Foo.cmake)

但是,我得到了错误:

.
├── cmake
│   └── Foo.cmake
├── CMakeLists.txt

基于include()CMAKE_MODULE_PATH的文档,我认为这应该可行。

如果我保留同一棵树但修改 include could not find load file: Foo.cmake ,则可以正常加载:

include

我是误会还是做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:3)

它应该是一个模块名称-扩展名.cmake-使用CMAKE_MODULE_PATH搜索文件时应用include变量命令:

# This searches a *module* and uses 'CMAKE_MODULE_PATH' variable
include(Foo)
# This searches a *file* and doesn't use 'CMAKE_MODULE_PATH' variable
include(Foo.cmake)

include函数的签名

  

include( [可选] [RESULT_VARIABLE]                         [NO_POLICY_SCOPE])

表示其第一个参数可以是文件模块

CMAKE_MODULE_PATH变量仅在搜索模块时适用:

  

如果指定模块而不是文件,则首先在<modulename>.cmake中搜索名称为CMAKE_MODULE_PATH的文件,然后在CMake模块目录中搜索。

文件的名称-<modulename>.cmake-表示模块名称不应该带有.cmake后缀。