c++ - 需要帮助尝试让 Cmake 找到第三方库

标签 c++ integration cmake zlib taglib

我目前有一个链接到两个第三方库的项目。这些库必须自己构建,然后链接到项目。一个是taglib,另一个是zlib。我注意到,当您在 taglib 目录中使用 Cmake-gui 程序时,您需要指定 zlib 的构建和安装位置。

我的目标是让 CMake 为我的程序做类似的事情。由于这些库的存储位置不一致,如何提示用户提供所需库的路径?

我希望这足够具体。

最佳答案

对于 ZLib,CMake 提供了 FindZLIB.cmake,您可以“简单地”放置 find_package调用你的 cmakelists。如有必要,您可以对 findzlib.cmake 进行一些修改以满足您的需要。例如。在搜索库时添加 ZLIB_DIR 作为附加提示。然后这个 ZLIB_DIR 可以由用户设置。

假设您的库/可执行文件名为 YourProject,您可以按如下方式使用它。

find_package( ZLIB REQUIRED )
if ( ZLIB_FOUND )
    include_directories( ${ZLIB_INCLUDE_DIRS} )
    target_link_libraries( YourProject ${ZLIB_LIBRARIES} )
endif( ZLIB_FOUND )

您应该对 TagLib 使用相同的方法,但应该编写自己的 FindTagLib.cmake(或搜索一个好的方法)。

这里的重要部分是您让用户可以选择设置 TagLib_DIR 变量,您可以使用该变量来搜索 TagLib,并且您可以使用 FindPackageHandleStandardArgs报告成功或失败。

关于c++ - 需要帮助尝试让 Cmake 找到第三方库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6173915/

相关文章:

c++ - 将外部应用程序与我的应用程序集成

android - 将 Native Module 从 Gradle Experimental Plugin 迁移到 Stable Gradle

c# - Visual Studio 2019 的 CSC 警告 CS1668

c++ - 数组到指针转换期间的临时物化

c++ - 获取用户输入以形成链表

angularjs - Paypal在单页应用中的实现

ios - Instagram 集成授权码?

c++ - 将模板类从 C++ 库导出到 VB.NET 和 C#

c++ - 我想要一个递归函数来使用二进制搜索检查数组的顺序

cmake - 复制文件并将它们包含在 CPack 存档中