代码之家  ›  专栏  ›  技术社区  ›  Gerry

为C++库查找正确的CMAKE配置

  •  0
  • Gerry  · 技术社区  · 6 年前

    我想用 yaml-cpp 在我的项目中。我花了半个小时才试着用下面的名字把图书馆正确地连接起来。在我最后偶然发现他们之后 this file ,我决定:

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

    这是可行的,但我寻找这些的方式似乎是没有大脑的。

    如何远程计算include变量的正确名称?可能是 YAML_LIBS 我是说, YAML_LIBRARY 我是说, YAML_CPP_LIBRARIES ,没有标准,对吧?为大多数C++库确定正确的CMAKE配置的适当方法是什么?

    谢谢您。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Tsyvarev    6 年前

    大部分 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})