CMake中指定find_package()包的路径的方法

在 CMake 中,CMAKE_PREFIX_PATHCMAKE_MODULE_PATHCMAKE_FIND_ROOT_PATHfind_packagePATHSHINTS 选项都是用于指定查找库和包的路径,但它们的用途和优先级有所不同。下面是它们之间的区别和推荐使用的场景:

  1. CMAKE_PREFIX_PATH

    用途:用于指定查找包时的前缀路径。CMake 会在这些路径下查找包的配置文件(例如 Find<Package>.cmake<Package>Config.cmake)。
    优先级:在查找时,CMAKE_PREFIX_PATH 中的路径会被优先考虑。
    推荐使用场景:当你有多个安装位置或需要指定特定的库路径时,可以使用这个变量。

  2. CMAKE_MODULE_PATH

    用途:用于指定 CMake 模块的查找路径,主要是用于查找 Find<Package>.cmake 文件。
    优先级:在查找时,CMAKE_MODULE_PATH 中的路径会被优先考虑,但通常优先级低于 CMAKE_PREFIX_PATH
    推荐使用场景:当你有自定义的查找模块或需要使用特定的 Find 模块时,可以使用这个变量。

  3. CMAKE_FIND_ROOT_PATH

    用途:用于指定交叉编译时的查找根路径。CMake 会在这些路径下查找库和头文件。
    优先级:在交叉编译时使用,通常与 CMAKE_FIND_ROOT_PATH_MODE_PACKAGECMAKE_FIND_ROOT_PATH_MODE_LIBRARY 等变量结合使用。
    推荐使用场景:在进行交叉编译时,指定目标平台的库和头文件路径。

  4. find_packagePATHSHINTS 选项

    PATHS:用于指定查找包时的路径,优先级高于默认路径,但低于 CMAKE_PREFIX_PATH。 HINTS:用于提供额外的提示路径,优先级低于 CMAKE_PREFIX_PATHPATHS,但高于默认路径。
    推荐使用场景:当你在调用 find_package 时希望临时指定查找路径,可以使用 PATHSHINTS 选项。

总结

推荐使用:
    如果你需要全局设置查找路径,使用 CMAKE_PREFIX_PATH。
    如果你有自定义的查找模块,使用 CMAKE_MODULE_PATH。
    在交叉编译时,使用 CMAKE_FIND_ROOT_PATH。
    在特定的 find_package 调用中,使用 PATHS 和 HINTS 选项。

根据具体的需求选择合适的选项,以确保 CMake 能够正确找到所需的库和包。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值