为什么我不能 link spdlog library installed with conan

Why can't I link to spdlog library installed with conan

我有一个简单的CMake项目,尝试使用conan安装的spdlog库(1.5.0版本)

但是在构建时出现以下错误:

undefined reference to `spdlog::get(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'

我不确定问题是来自我的设置、conan 还是 spdlog 库。 谁能帮我看看在哪里?

我的本地设置: Ubuntu 19.04, QT造物主, Clang 9(在IDE和柯南), 柯南 1.24.0

请先从 Conan 文档 https://docs.conan.io/en/latest/getting_started.html 中的 "Getting Started" 开始,确保它有效,然后从那里开始做您自己的示例。

在入门部分,您将看到一个使用 ConanCenter 中现有库的示例。还有一个突出的 "Important" 通知说:

If you are using GCC compiler >= 5.1, Conan will set the compiler.libcxx to the old ABI for backwards compatibility. You can change this with the following commands:

$ conan profile new default --detect  # Generates default profile detecting GCC and sets old ABI
$ conan profile update settings.compiler.libcxx=libstdc++11 default  # Sets libcxx to C++11 ABI

基本上默认的自动检测配置文件使用的是 libstdc++,而您的编译器很可能使用的是 libstdc++11。您需要更改默认配置文件:

$ conan profile update settings.compiler.libcxx=libstdc++11 default

然后再次执行 "conan install" 并构建。