我刚开始使用CMake,我注意到他们同时拥有find_package
和find_library
。这让我很困惑。有人可以解释编程世界中包和库之间的区别吗?或者,在CMake的世界?
赞赏它,伙计们!
答案 0 :(得分:18)
想象一下,您想在项目中使用zlib,您需要找到头文件zlib.h
和库libz.so
(在Linux上)。您可以使用低级cmake命令find_path
和find_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文件,或者询问用户是否无法自动找到该位置。