Я пытаюсь включить библиотеку только для наддува заголовка, в частности, <boost/variant>
, используя проект Qt Creator.
Это то, что я добавил в мой .pro
файл:
INCLUDEPATH += /usr/include/boost \
Теперь, если я зайду в файл .cpp
и попробую включить ..
#include <variant.hpp>
работает, но
#include <boost/variant.hpp>
нет.
Это имеет смысл, так как я добавляю /usr/include/boost/
, а не /usr/include
.
Тем не менее, если я вместо этого
INCLUDEPATH += /usr/include
Я получаю массу ошибок, связанных с cmath, которые, кажется, связаны с добавлением /usr/include
к пути включения - https://github.com/android-ndk/ndk/issues/452
Если я просто наберу #include <variant.hpp>
в своем коде, то код повышения жалуется - 'boost/variant/variant.hpp' file not found
.
Как правильно разрешить импорт стиля <boost/variant.hpp>
для работы без включения всего /usr/include/
?
Минимальный пример кода:
# Example.pro
QT += quick
CONFIG += c++17
SOURCES += \
main.cpp
RESOURCES += qml.qrc
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
// main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <boost/variant.hpp>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
const QUrl url(QStringLiteral("qrc:/main.qml"));
QObject::connect(&engine, &QQmlApplicationEngine::objectCreated,
&app, [url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
}, Qt::QueuedConnection);
engine.load(url);
return app.exec();
}
qml.qrc
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file>main.qml</file>
</qresource>
</RCC>
// main.qml
import QtQuick 2.12
import QtQuick.Controls 2.5
ApplicationWindow {
}
Спасибо.