如何在自定义Find.cmake脚本中获取find_package()的version参数?
能否在自定义Find.cmake脚本中获取find_package()的version参数?
当然可以。CMake会自动为自定义Find脚本设置一系列相关变量,用来存储find_package()调用时传入的version参数信息。
假设你编写的是FindFoo.cmake,当用户通过以下方式调用:
find_package(Foo 1.3.5 REQUIRED)
在你的FindFoo.cmake脚本中,可以通过以下变量获取版本信息:
Foo_FIND_VERSION:完整的版本号,示例中为1.3.5Foo_FIND_VERSION_MAJOR:主版本号,示例中为1Foo_FIND_VERSION_MINOR:次版本号,示例中为3Foo_FIND_VERSION_PATCH:补丁版本号,示例中为5Foo_FIND_VERSION_TWEAK:如果版本号包含tweak部分(如1.3.5.2),则对应此变量的值
这些变量是CMake自动注入的,无需额外配置。你可以在脚本中根据这些版本值适配不同版本的库查找逻辑,比如匹配对应版本的头文件、库文件路径,或者验证找到的库版本是否符合要求。
如果调用find_package()时没有指定version参数,这些变量会被设为0或者空值,你可以在脚本中添加判断逻辑处理这种情况。
内容的提问来源于stack exchange,提问作者Nickolay Olshevsky
相关产品推荐
相关产品推荐

