CMake find_依赖项不尊重包文档中的行为?
以下文件说明: 如果未找到依赖项,则CMake find_依赖项不尊重包文档中的行为?,cmake,dependencies,Cmake,Dependencies,以下文件说明: 如果未找到依赖项,则find_dependency宏还会将grampingstats_FOUND设置为False,并诊断如果没有Stats包,则无法使用grampingstats包 然而,我们注意到,只有当从下游请求grampingstats而不使用REQUIRED参数时,才会出现这种情况 不需要 然后我们得到上述行为,即: Found package configuration file: ... 但它将grampingstats\u FOUND设置为FALSE,因
find_dependency
宏还会将grampingstats_FOUND
设置为False
,并诊断如果没有Stats
包,则无法使用grampingstats
包
然而,我们注意到,只有当从下游请求grampingstats
而不使用REQUIRED
参数时,才会出现这种情况
不需要
然后我们得到上述行为,即:
Found package configuration file:
...
但它将grampingstats\u FOUND
设置为FALSE
,因此认为包“grampingstats”未找到。
包中给出的理由:
ClimbingStats could not be found because dependency Stats could not be found.
要求的
如果我们需要爬升状态
包:
find_package(ClimbingStats CONFIG REQUIRED)
那么错误根本就没有提到攀登状态
Could not find a package configuration file provided by "Stats" with any of
the following names:
StatsConfig.cmake
stats-config.cmake
Add the installation prefix of "Stats" to CMAKE_PREFIX_PATH or set
"Stats_DIR" to a directory containing one of the above files. If "Stats"
provides a separate development package or SDK, be sure it has been
installed.
我们是否误解了上面链接的文档,或者这是CMake行为中的错误 有没有一种方法可以要求一个包,但当它的上游没有找到时,仍然会得到描述性错误消息(如第一个示例中所示) 我们是否误解了上面链接的文档,或者这是CMake行为中的错误 看起来像是CMake文档中的错误 各国的文件:
find_dependency
为QUIET
和REQUIRED
转发正确的参数,这些参数已传递给原始find_package()
调用
因此,当使用必需关键字调用外部find_package()
时,也会使用该关键字调用内部find_package()
在您的案例中可以观察到这种行为:错误消息是通过调用生成的
find_package(stats REQUIRED)
调用方代码没有机会处理错误结果,从而使错误消息更具描述性
有没有一种方法可以要求一个包,但当它的上游没有找到时,仍然会得到描述性错误消息(如第一个示例中所示) 据我所知,
find_dependency
的更多“本机”行为是不将REQUIRED
关键字转发到内部find_package
,而是手动检查find_package
的结果,如果为FALSE,则发出相应的消息
您可以就此向CMake tracker提交功能请求
find_package(stats REQUIRED)