我听说有些人声称,如果您在
find_package(<PackageName>_FOUND)
中运行 CMakeLists.txt
,那么(就像 <PackageName>_INCLUDE_DIRS
一样)包维护者可以决定 结果变量 的命名方式。 其他人声称保证是<PackageName>_FOUND
。
在文档中我们读到:
查找模块的主要任务是确定包是否可用,设置 _FOUND 变量来反映这一点,并提供使用该包所需的任何变量、宏和导入的目标。在上游库不提供配置文件包的情况下,查找模块非常有用。
所以这听起来很像
<PackageName>_FOUND
肯定是由 find 模块本身设置的,总是并且不依赖于Find<PackageName>.cmake
文件。由于人们在这一点上仍然自相矛盾,所以我对某人对此事的单纯看法不感兴趣,而是对权威答案或证明这一点的例子感兴趣。
CMake 并不是某种确保正确生成所有包的权威,这只是一个标准,说明如何命名变量以与其他 CMake 功能兼容。如果您不遵守它,您将需要处理由此产生的任何问题,但如果您认为自己知道自己在做什么,则不必这样做。
Find<PackageName>.cmake
的一个常见组件是
find_package_handle_standard_args()
(source),它负责设置
<PackageName>_FOUND
变量。因此您不必直接自行设置。如果你什么都不做,它就会丢失,这可能会在以后造成麻烦,但没关系。简而言之,答案是:没有什么是真正需要的。您的
Find<PackageName>.cmake
可能实际上是空的。没什么用处,但只要它在
CMAKE_MODULE_PATH
上就不会导致错误。当然,感谢所有辅助函数和生成器,不设置基本变量实际上是相当困难的。