需要帮助尝试使Cmake找到第三方库
Need help trying to make Cmake find third party libraries
我目前有一个链接到两个第三方库的项目。这些库必须自己构建,然后链接到项目。一个是taglib,另一个是zlib。我注意到,当您在taglib目录上使用Cmakegui程序时,需要指定zlib的构建和安装位置。
我的目标是让CMake为我的程序做类似的事情。由于这些库的存储位置不一致,我如何提示用户提供所需库的路径?
我希望这足够具体。
在ZLib的情况下,cmake提供了一个FindZLIB.cmake,您可以"简单地"在cmakelist中放入一个find_package调用。如有必要,您可以对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报告成功或失败。
不确定交互式提示,但您总是可以使用环境变量或以下内容:
cmake -D<VAR_NAME>:STRING=<path to custom zlib> .
为cmake提供自定义的zlib或taglib位置。
不要忘记更新FindZLIB.cmake以处理FIND_PATH和FIND_IBRARY 中的这些变量
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用CMake创建QML插件
- cmake如何在fedora工作站中找到boost静态库包
- 使用CMake检测支持的C++标准
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 将 OpenCV 与 CMAKE 中的项目一起构建为第三方库的正确方法
- CMake 包含非 cmake 库的第三方标头
- CMake:Android Studio 原生活动项目无法在项目根目录之外找到第三方库
- 在Linux上使用Cmake时,我该如何告诉PVS-Studio忽略第三方库中的所有文件
- CMake - 安装第三方 dll 依赖项
- 将第三方Libs添加到我的CMAKE项目中
- 如何在 Linux 上将所有第三方运行时依赖项包含在 cmake/cpack 生成的包中
- 如何在cmake中将第三方库链接到静态库目标
- CMake 包括第三方项目
- CMake第三方库未定义引用
- 使用cmake将第三方静态库组合成一个独立的静态库
- 需要帮助尝试使Cmake找到第三方库