C++ 需要帮助才能让Cmake找到第三方库吗

C++ 需要帮助才能让Cmake找到第三方库吗,c++,integration,cmake,zlib,taglib,C++,Integration,Cmake,Zlib,Taglib,我目前有一个链接到两个第三方库的项目。这些库必须自己构建,然后链接到项目。一个是taglib,另一个是zlib。我注意到,当您在taglib目录上使用cmakegui程序时,需要指定zlib的构建和安装位置 我的目标是让CMake为我的程序做类似的事情。由于这些库的存储位置不一致,如何提示用户提供所需库的路径 我希望这足够具体。在ZLib的情况下,cmake提供了FindZLIB.cmake,您可以“简单地”在您的cmakelists中进行调用。如有必要,您可以对findzlib.cmake进行

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

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


我希望这足够具体。

在ZLib的情况下,cmake提供了FindZLIB.cmake,您可以“简单地”在您的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并报告成功或失败。

不确定交互式提示,但您始终可以使用环境变量或以下变量:

cmake -D<VAR_NAME>:STRING=<path to custom zlib> .
cmake-D:STRING=。
为cmake提供自定义zlib或taglib位置


别忘了更新FindZLIB.cmake来处理FIND_PATH和FIND_LIBRARY中的变量

,所以我所做的就是将这个FindTaglib.cmake放在与CMakeLists.txt相同的目录中?它会在cmake_模块路径中搜索FindTaglib.cmake。我不确定带有CMakeLists.txt的主目录是否已经存在。如果没有,您可以添加它:set(CMAKE\u模块\u路径${CMAKE\u当前\u源\u目录})