Ошибка повышения ссылки с помощью менеджера пакетов Conan - PullRequest
0 голосов
/ 15 апреля 2019

Я столкнулся со следующей ошибкой при использовании версии Boost для Conan.Код прекрасно компилируется с использованием библиотек ОС (хотя и в другой системе).

Вывод ошибки:

[  2%] Built target logging
[ ...] ....
[ 18%] Linking CXX executable ../bin/DEPTHFILE_UTILS
../lib/lib_logging.so: undefined reference to "boost::log::v2_mt_posix::aux::code_convert_impl(wchar_t const*, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned long, std::locale const&)"
../lib/lib_logging.so: undefined reference to "boost::log::v2_mt_posix::parse_error::throw_(char const*, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, boost::log::v2_mt_posix::attribute_name const&)"
../lib/lib_logging.so: undefined reference to "boost::log::v2_mt_posix::sinks::text_file_backend::consume(boost::log::v2_mt_posix::record_view const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)"
collect2: error: ld returned 1 exit status
src/CMakeFiles/DEPTHFILE_UTILS.dir/build.make:146: set di istruzioni per l'obiettivo "bin/DEPTHFILE_UTILS" non riuscito
make[2]: *** [bin/DEPTHFILE_UTILS] Errore 1
CMakeFiles/Makefile2:1018: set di istruzioni per l'obiettivo "src/CMakeFiles/DEPTHFILE_UTILS.dir/all" non riuscito
make[1]: *** [src/CMakeFiles/DEPTHFILE_UTILS.dir/all] Errore 2
Makefile:94: set di istruzioni per l'obiettivo "all" non riuscito

Я уже определил BOOST_LOG_DYN_LINK в своем заголовке logging.h, где я объявляювсе мои макросы, связанные с журналом.lib_logging.so - это место, где расположен метод init().CMake находит все необходимые библиотеки и отлично работает.

Конан конфигурации:

[requires]
boost/1.66.0@conan/stable
gtest/1.8.1@bincrafters/stable
opencv/3.4.5@conan/stable

[generators]
cmake

[options]
boost:shared=True

Любая помощь приветствуется.

Информация о системе:

  • Запуск на виртуальной машине с Ubuntu 16.04 LTS
  • Конан версии 1.13.0
  • CXX Compiler GNU
  • CXX Compiler версии 5.4.0

Конан-конфигурация:

arch=x86_64
arch_build=x86_64
build_type=Release
compiler=gcc
compiler.libcxx=libstdc++
compiler.version=5
os=Linux
os_build=Linux

Команда запускается в каталоге build (вне исходной сборки), используя this в качестве ссылки:

virtualenv vconan -no-site-package
source vconan/bin/activate
pip install -upgrade pip
pip install conan
conan install ../
deactivate
cmake -DCMAKE_BUILD_TYPE=Release -DCONAN_BUILD=ON ..
make

1 Ответ

1 голос
/ 16 апреля 2019

Благодаря вопросам, заданным @uilianries, я понял свою ошибку:

compiler.libcxx=libstdc++

Это неправильно .В команду установки я добавил следующее:

conan install --settings compiler.libcxx="libstdc++11" ../

Вы также можете редактировать профиль по умолчанию в ~/.conan/profiles/default, настраивая compiler.libcxx=libstdc++11.

Теперь все работает.

...