首页 > 解决方案 > cmake中find_dependency和find_package的区别?

问题描述

在 package-Config.cmake 中,如果我使用 find_package 而不是 find_dependency,会对我的应用程序产生什么影响?什么情况下会断?

标签: cmake

解决方案


根据文档find_dependency只是一个包装find_package

它旨在用于包配置文件 ( <package>Config.cmake)。find_dependency转发传递给原始调用的QUIETREQUIRED的正确参数。find_package()指定的任何其他参数都将转发到find_package().

如果找不到依赖项,它会设置一条信息性诊断消息并调用return()以结束调用包配置文件的处理并返回到find_package()加载它的命令。

如果您使用,例如,find_package(REQUIRED)而不是find_dependency,并且找不到包,那么用户将很难理解错误与外部包有关,而不仅仅是与内部包有关。此外,如果外部调用find_package不使用REQUIRE选项,则使用该选项执行内部调用是不一致的。


推荐阅读