Заголовок spdlog только с внешним fmt. Ошибка spdlog: 'internal': не является членом 'fmt' - PullRequest
0 голосов
/ 09 июля 2020

Я использую spdlog только для заголовков в качестве внешнего проекта cmake.

find_program(GIT_EXECUTABLE git)

ExternalProject_Add(
    spdlog
    PREFIX ${CMAKE_BINARY_DIR}/vendor/spdlog
    GIT_REPOSITORY "https://github.com/gabime/spdlog.git"
    GIT_TAG "v1.6.1"
    TIMEOUT 10
    CONFIGURE_COMMAND ""
    BUILD_COMMAND ""
    INSTALL_COMMAND ""
    UPDATE_COMMAND ""
)

Чтобы связать внешнюю библиотеку fmt с spdlog, было добавлено следующее:

add_subdirectory(fmt EXCLUDE_FROM_ALL)
...
target_link_libraries(myProject
        fmt::fmt
    )

Он выполняется в этом состоянии. но если я добавлю следующий код для использования внешнего fmt, произойдет ошибка компиляции.

#define SPDLOG_FMT_EXTERNAL   // If I add this code I get an error.
#include <spdlog/spdlog.h>

Сообщение об ошибке выглядит следующим образом.

myproject\build\x64-Debug\vendor\spdlog\src\spdlog\include\spdlog\details\fmt_helper.h(40): error C2039: 'internal': is not a member of 'fmt'

Я думаю, что spdlog необходимо установить для используйте внешний FMT, а не бандл, но я этого не делаю. Когда я устанавливаю spdlog с помощью «ExternalProject_Add», я думаю, что мне нужно сделать что-то дополнительное, но я не знаю, что это такое.

Я нашел в spdlog / CMakeLists вариант, который, кажется, связан с этим. txt

option(SPDLOG_FMT_EXTERNAL "Use external fmt library instead of bundled" OFF)

Я попробовал следующий метод изменить "SPDLOG_FMT_EXTERNAL" на "ON", но проблема осталась той же. Я не уверен, что это правильный путь и подходящее решение. спасибо.

ExternalProject_Add(
    spdlog
    PREFIX ${CMAKE_BINARY_DIR}/vendor/spdlog
    GIT_REPOSITORY "https://github.com/gabime/spdlog.git"
    GIT_TAG "v1.6.1"
    TIMEOUT 10
    CONFIGURE_COMMAND ""
    CMAKE_ARGS "-DSPDLOG_FMT_EXTERNAL=ON -DDSPDLOG_FMT_EXTERNAL:string=ON"
    BUILD_COMMAND ""
    INSTALL_COMMAND ""
    UPDATE_COMMAND ""
)

1 Ответ

0 голосов
/ 10 июля 2020

Это было исправлено в spdlog версии 1.7: https://github.com/gabime/spdlog/releases/tag/v1.7.0:

Поддержка использования внешнего fmt версии 7.x

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...