为C ++库找到正确的cmake配置

时间:2018-06-26 06:25:30

标签: c++ cmake

我正在尝试在项目中使用yaml-cpp。通过尝试以下名称,我花了半个小时才正确链接库。我终于在this file中偶然发现了他们之后,我为此解决了:

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

它有效,但是我搜索这些内容的方式似乎毫无头脑。

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

谢谢。

1 个答案:

答案 0 :(得分:2)

大多数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})