find_package(...)在 cmake 中使用加载包时,版本文件必须声明 5 个变量。其中两个是
根据它们用于的文档
PACKAGE_VERSION_COMPATIBLE
如果版本兼容,则为真
PACKAGE_VERSION_UNSUITABLE
如果不适合任何版本,则为真
这让我感到困惑。PACKAGE_VERSION_UNSUITABLE已在 CMake 2.6.2 中引入。然而,它似乎相互排斥PACKAGE_VERSION_COMPATIBLE。那么它为什么存在呢?
有人可以启发我了解兼容和(不)合适之间的区别,并举一个例子,其中两个值都是true或false?
小智 2
可能为时已晚,但为了公平起见:有三个变量检查版本:
PACKAGE_VERSION_EXACT、PACKAGE_VERSION_COMPATIBLE和PACKAGE_VERSION_UNSUITABLE。
您可以在此处找到此变量背后的逻辑:https://github.com/Kitware/CMake/blob/0ae545ebad1b6b2a6c851205854b887d19c8da59/Source/cmFindPackageCommand.cxx#L1270
我会尝试改写。请注意,为了便于阅读,我删除了变量名称。我们把它归结为四种情况:
UNSUITABLE设置:丢弃包,不管其他变量UNSUITABLE未设置,EXACT未设置,COMPATIBLE未设置:如果find_package没有请求版本,则包是好的(有或没有 EXACT 并不重要)UNSUITABLE未设置,EXACT未设置,设置:如果不需要精确版本,COMPATIBLE则软件包很好find_packageUNSUITABLE没有设置,EXACT则设置:包好因此,PACKAGE_VERSION_COMPATIBLE和PACKAGE_VERSION_UNSUITABLE并不排他:
PACKAGE_VERSION_UNSUITABLE无条件丢弃包裹PACKAGE_VERSION_COMPATIBLEfind_package仅当未设置 EXACT 时才允许包,并且如果未请求版本则无效希望有帮助 =)
| 归档时间: |
|
| 查看次数: |
152 次 |
| 最近记录: |