我刚刚开始使用 CMake,发现它们既有
谢谢!
find_package
又有 find_library
。这让我感到困惑。请问大家能解释一下在编程世界或者是 CMake 中,包和库的区别吗?谢谢!
find_package
又有 find_library
。这让我感到困惑。请问大家能解释一下在编程世界或者是 CMake 中,包和库的区别吗?假设你想在项目中使用zlib,需要找到头文件zlib.h
和库文件libz.so
(在Linux上)。您可以使用低级别的cmake命令find_path
和find_library
来查找它们,或者您可以使用find_package(ZLIB)
。后一个命令将尝试找到使用zlib所需的所有内容。这可能是额外的宏定义或依赖项。
更新,有关find_package
的更多详细信息:当调用CMake命令find_package(SomeThing)
时,如文档中所述,cmake可以以两种可能的模式运行:
FindSomeThing.cmake
的文件)SomeThingConfig.cmake
的文件)对于ZLIB,有一个名为FindZLIB
的模块,随CMake本身一起提供(在我的Linux机器上,该文件位于/usr/share/cmake/Modules/FindZLIB.cmake
)。该模块是一个CMake脚本,使用CMake API在默认位置搜索ZLIB文件,或者如果无法自动找到,则询问用户位置。