包与图书馆

时间:2014-05-23 14:51:33

标签: cmake package libraries difference

我刚开始使用CMake,我注意到他们同时拥有find_packagefind_library。这让我很困惑。有人可以解释编程世界中包和库之间的区别吗?或者,在CMake的世界?

赞赏它,伙计们!

1 个答案:

答案 0 :(得分:18)

想象一下,您想在项目中使用zlib,您需要找到头文件zlib.h和库libz.so(在Linux上)。您可以使用低级cmake命令find_pathfind_library来查找它们,也可以使用find_package(ZLIB)。后面的命令将尝试找出使用zlib所需的所有内容。它可以是额外的宏定义或依赖项。

更新,有关find_package 的详细信息:当调用CMake命令find_package(SomeThing) as says the documentation时,有两种可能性:模块模式(搜索对于文件FindSomeThing.cmake),或配置模式(搜索名为SomeThingConfig.cmake的文件)。对于ZLIB,有一个名为FindZLIB的模块,随CMake本身一起提供(在我的Linux机器上是文件/usr/share/cmake/Modules/FindZLIB.cmake)。该模块是一个CMake脚本,它使用CMake API在默认位置搜索ZLIB文件,或者询问用户是否无法自动找到该位置。