CMake中的PACKAGE_VERSION_COMPATIBLE和PACKAGE_VERSION_UNSUITABLE有什么区别?

火狐浏览器

当使用find_package(...)cmake加载软件包时,版本文件必须声明5个变量。他们两个是

  • PACKAGE_VERSION_COMPATIBLE
  • PACKAGE_VERSION_UNSUITABLE

根据它们用于的文档

PACKAGE_VERSION_COMPATIBLE

如果版本兼容,则为真

PACKAGE_VERSION_UNSUITABLE

如果不适合任何版本,则为True

这让我感到困惑。PACKAGE_VERSION_UNSUITABLE已在CMake 2.6.2中引入。但是,它似乎是互斥的PACKAGE_VERSION_COMPATIBLE那为什么存在呢?

有人能启发我关于兼容与(不合适)之间的区别,并举个例子,两个值均为truefalse吗?

比纳尔曼

可能为时已晚,但对于巨大的正义着想:有三个变量检查版本:PACKAGE_VERSION_EXACTPACKAGE_VERSION_COMPATIBLEPACKAGE_VERSION_UNSUITABLE

您可以在此处找到此变量背后的逻辑:https : //github.com/Kitware/CMake/blob/0ae545ebad1b6b2a6c851205854b887d19c8da59/Source/cmFindPackageCommand.cxx#L1270

我会尝试改写。请注意,为了便于阅读,我剪切了变量名。让我们将其归结为四种情况:

  • 如果UNSUITABLE设置:丢弃软件包,而不考虑其他变量
  • 如果UNSUITABLE未设置,EXACT未设置,COMPATIBLE未设置:如果find_package未请求版本,则包是好的(无论是否具有EXACT都无关紧要)
  • 如果UNSUITABLE未设置,则EXACT未设置,COMPATIBLE如果find_package不要求精确版本,则set:包是好的
  • 如果UNSUITABLE未设置,则EXACT设置为:package is good

所以,PACKAGE_VERSION_COMPATIBLEPACKAGE_VERSION_UNSUITABLE不排斥的:

  • PACKAGE_VERSION_UNSUITABLE 无条件丢弃包裹
  • PACKAGE_VERSION_COMPATIBLE仅在未设置EXACT的情况下才允许软件包,并且find_package在未请求版本时不起作用

希望有帮助=)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Maven中的package和groupId之间有什么区别

Eclipse中的package和project有什么区别?

package.json:&和&&有什么区别?

“ package”和“ module”之间有什么区别?

npm package.json文件中的依赖关系,devDependencies和peerDependencies之间有什么区别?

Java中的public,protected,package-private和private之间有什么区别?

package.json中的tilde(〜)和caret(^)有什么区别?

在package.json文件中包含“ @ babel / core”和“ babel-core”有什么区别?

node.js中的Package和Module之间有什么区别

'pip install <package>'和'python -m pip install <package>'有什么区别?

pipenv install <package>与pip install <package>有什么区别?

cmake中的pthread和-pthread选项有什么区别?

find_package和pkg_search_module有什么区别

npm-shrinkwrap.json和package-lock.json有什么区别?

“ nuget install”,“ Install-Package”和“ choco install”有什么区别?

getResourceAsStream(“ Words.txt”)和FileInputStream(“ ./ src / package / Words.txt”)之间有什么区别?

package.json main和app.config.js expo.entryPoint有什么区别?

Flutter Package get和Flutter pub Get有什么区别?

angular-cli package.json 和 ng -v 的版本有什么区别

IMAGE_INSTALL与PACKAGE_FEATURES-有什么区别?

MACOSX_DEPLOYMENT_TARGET和-mmacosx-version-min有什么区别?

各种MSBuild版本属性(例如Version,VersionPrefix和VersionSuffix)之间有什么区别?

当此绑定到scala中的包时,Private [this]与private [package]有什么区别?

如果package-lock.json锁定了“兼容版本”(^ version),那么在package.json中声明有什么意义呢?

CMake的-S和-H选项有什么区别?

CMake中的include_directories和target_include_directories有什么区别?

XPath中// * [*]和// * [。]有什么区别?

XPath中.//和// *有什么区别?

JavaScript中的&和&&有什么区别?

TOP 榜单

热门标签

归档