为 yaml-cpp 库查找正确的 cmake 配置



我试图在我的项目中使用 yaml-cpp。我花了半个小时才通过试验以下名称来正确链接库。在我最终在这个文件中偶然发现它们之后,我选择了这个:

find_package(yaml-cpp REQUIRED)
include_directories(${YAML_INCLUDE_DIRS})
target_link_libraries(${YAML_CPP_LIBRARIES})

它有效,但我寻找这些的方式似乎没有头脑。

如何远程找出包含变量的正确名称?可能是YAML_LIBSYAML_LIBRARYYAML_CPP_LIBRARIES,没有标准,对吧?为大多数 c++ 库确定正确的 cmake 配置的适当方法是什么?

谢谢。

大多数脚本FindXXX.cmake顶部都有用法描述(因为 CMake 注释开始于#年(。XXXConfig.cmake(或xxx-config.cmake(脚本也是如此。

命令find_package(XXX)使用其中一个这样的脚本(实际存在的脚本(。因此,在使用此方法发现包之前,请确保已阅读此类脚本中的"嵌入"说明。

在您的情况下,yaml-cpp-config.cmake文件(在构建或安装目录中创建(包含以下说明:

# - Config file for the yaml-cpp package
# It defines the following variables
#  YAML_CPP_INCLUDE_DIR - include directory
#  YAML_CPP_LIBRARIES    - libraries to link against

所以正确使用find_package(yaml-cpp)的结果是

include_directories(${YAML_CPP_INCLUDE_DIRS})
target_link_libraries(<your-target> ${YAML_CPP_LIBRARIES})

最新更新