cmake - find_package(MPI) 和 FindMPI 有什么区别?
问题描述
如CMake 3.0文档中所述find_package(MPI)
,FindMPI
似乎可以互换?但我的问题是:
- 这两者有什么区别?
- 最新版本也是这样吗?
- 此外,是否
FindMPI
提供与 ? 中的选项类似的任何REQUIRED
内容find_package()
?
解决方案
因为FindMPI
是CMake 安装提供的Find Modulesfind_package(MPI)
之一,和include(FindMPI)
调用本质上是等价的。(include()
此处需要 加载模块;简单地写入FindMPI
CMake 文件将导致错误。)
该find_package()
命令有两种模式:MODULE
和CONFIG
。默认为MODULE
模式,并且来自find_package()
文档:
在模块模式下,CMake 搜索一个名为
Find<PackageName>.cmake
. 该文件首先在 中搜索CMAKE_MODULE_PATH
,然后在 CMake 安装提供的 Find Modules 中搜索。
因此,find_package(MPI)
会搜索一个名为 的文件FindMPI.cmake
,相当于命令include(FindMPI)
. 除非您FindMPI.cmake
在CMAKE_MODULE_PATH
.
虽然它们本质上等同于命令,但调用find_package()
通常更有用,因为它允许您传递参数,例如REQUIRED
,以进一步指定如何加载外部项目的设置。
推荐阅读
- html - 如何在css网格中居中div
- pdf - PDF - 字符在 PDF 上显示为空白
- python - AttributeError:类型对象'Categories'在Django中没有属性'user_id__isnull'
- java - quarkus jaxrs 非阻塞误解
- r - 在 R 中按日期识别和计算重复 ID
- r - 在 R 中使用“lapply”从初始数据帧中创建 data.frames
- c++ - 引用返回的变量范围
- javascript - 使用 Google Scripts 应用程序删除两个重复的行
- java - dfs的空间复杂度
- python - 无法通过 crontab 执行 python 2.7 脚本,但可以手动执行。是什么赋予了?