我很难让CMake的include()语句识别CMAKE_MODULE_PATH。我希望做这样的事:
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
include(Foo.cmake)使用这种类型的目录树:
.
├── cmake
│ └── Foo.cmake
├── CMakeLists.txt但是,我得到了错误:
include could not find load file:
Foo.cmake基于include()和CMAKE_MODULE_PATH的文档,我认为这应该是可能的。
如果我保留相同的树但修改了include,那么它将很好地加载:
include(cmake/Foo.cmake)我是弄错了还是做错了什么?
谢谢!
发布于 2019-12-13 17:02:47
它应该是一个模块名称--没有 .cmake扩展名的--用于在使用include命令搜索文件时应用CMAKE_MODULE_PATH变量:
# 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函数的签名
包含(可选NO_POLICY_SCOPE)
这意味着它的第一个参数可以是文件,也可以是模块。
而CMAKE_MODULE_PATH变量仅在搜索模块时应用。
如果指定了一个模块而不是一个文件,则首先在
CMAKE_MODULE_PATH中搜索名为<modulename>.cmake的文件,然后在CMake模块目录中搜索该文件。
文件的名称-- <modulename>.cmake --建议模块名不应该带有.cmake后缀。
https://stackoverflow.com/questions/59326450
复制相似问题