Как правильно добавить boost :: filesystem в проект qt? - PullRequest
0 голосов
/ 24 апреля 2020

Попытка скомпилировать простую программу, используя boost :: filesystem с qt:

#include <boost/filesystem.hpp>
#include <boost/range/iterator_range.hpp>
#include <iostream>

using namespace boost::filesystem;

int main() {
    path p(current_path());

    if(is_directory(p)) {
        std::cout << p << " is a directory containing:\n";

        for(auto& entry : boost::make_iterator_range(directory_iterator(p), {}))
            std::cout << entry << "\n";
    }
}

и файлом my .pro:

QT -= gui

CONFIG += c++11 console
CONFIG -= app_bundle

INCLUDEPATH += $$PWD/boost_1_72_0
INCLUDEPATH += $$PWD/boost_1_72_0/boost_mingw_53_32/include/boost-1_72

LIBS += "-L$$PWD/boost_1_72_0/boost_mingw_53_32/lib" \
            -llibboost_filesystem-mgw49-mt-x32-1_72 \
            -llibboost_filesystem-mgw49-mt-d-x32-1_72

DEFINES += QT_DEPRECATED_WARNINGS

SOURCES += \
        main.cpp

qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

Но в результате получаются следующие ошибки компоновщика:

undefined reference to `boost::filesystem::detail::current_path(boost::system::error_code*)'
 undefined reference to `boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*)'
 undefined reference to `boost::filesystem::detail::directory_iterator_increment(boost::filesystem::directory_iterator&, boost::system::error_code*)'
 undefined reference to `boost::filesystem::detail::directory_iterator_construct(boost::filesystem::directory_iterator&, boost::filesystem::path const&, unsigned int, boost::system::error_code*)'
 undefined reference to `boost::filesystem::detail::dir_itr_close(void*&)'
 undefined reference to `boost::filesystem::path::codecvt()
 undefined reference to `boost::filesystem::path_traits::convert(wchar_t const*, wchar_t const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::codecvt<wchar_t, char, int> const&)'

Почему компоновщик не может определить определения всех этих функций? Встроенный надстройка с помощью командной строки и компилятора mingw с использованием: bootstrap .bat gcc b2 toolset = g cc link = shared --prefix = boost_mingw_53_32 install

...