首页 > 解决方案 > 如何正确#include 一个柯南包?

问题描述

我有以下 cmake 配置。

  conan_cmake_configure(REQUIRES
                        catch2/2.13.7
                        fmt/6.1.2
                        termcolor/2.0.0
                        date/3.0.1
                        asio/1.20.0
                        tl-expected/20190710
                        GENERATORS cmake_find_package)

...
...
...

find_package(fmt REQUIRED)
include_directories(${fmt_INCLUDE_DIR})
link_libraries(${fmt_LIBRARIES})

find_package(termcolor REQUIRED)
include_directories(${termcolor_INCLUDE_DIR})
link_libraries(${termcolor_LIBRARIES})

find_package(date REQUIRED)
include_directories(${date_INCLUDE_DIR})
link_libraries(${date_LIBRARIES})

find_package(asio REQUIRED)
include_directories(${asio_INCLUDE_DIR})
link_libraries(${asio_LIBRARIES})

find_package(tl-expected REQUIRED)
include_directories(${tl-expected_INCLUDE_DIR})
link_libraries(${tl-expected_LIBRARIES})

我可以像这样#include 库:

#include <asio.hpp>
#include <fmt/format.h>

但我没有找到任何关于如何准确#includeexpected库的信息。我已经尝试过 expected.hpp来自https://github.com/hannahwhy/conan-tl-expected/blob/stable/1.0.1/test_package/example.cpp的示例

它是fatal error C1083: No such file or directory

标签: c++packageincludeconan

解决方案


感谢您的提示。答案实际上很简单(通常如此)。

cmake在创建 include_directories 和 link_libaries 变量时转换-为。_所以这修复了它:

find_package(tl-expected REQUIRED)
include_directories(${tl_expected_INCLUDE_DIR})
link_libraries(${tl_expected_LIBRARIES})

推荐阅读