如何正确地将boost :: filesystem添加到qt项目?

时间:2020-04-23 21:01:38

标签: c++ qt boost linker boost-filesystem

尝试使用带有qt的boost :: filesystem编译一个简单程序:

#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";
    }
}

和我的.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&)'

为什么链接器无法检测到所有这些函数的定义? 使用命令promt和mingw编译器使用以下命令构建了boost: bootstrap.bat gcc b2工具集= gcc链接=共享--prefix = boost_mingw_53_32安装

0 个答案:

没有答案