QbsProjectManager: Switch to an out-of-process approach

That is, do not link to the qbscore library anymore. Instead, use the
JSON-based API.
Advantages:
    - We can build Qt Creator with qbs support without qbs being present
      on the build machine.
    - Smaller memory footprint for Qt Creator, as the qbs build graphs
      are now being managed by a separate process.
    - Potential crashes in qbs will not kill the Qt Creator process.

Fixes: QTCREATORBUG-20622
Task-number: QTCREATORBUG-22904
Change-Id: If7d344b0ac65a99ff0a3a3db215d61b8d903e47e
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
This commit is contained in:
Christian Kandeler
2019-06-28 14:30:32 +02:00
parent c2127c9ec4
commit 6913947986
38 changed files with 2339 additions and 1972 deletions

View File

@@ -25,21 +25,18 @@
#pragma once
#include "qbsnodes.h"
#include <qbs.h>
#include <memory>
namespace QbsProjectManager {
namespace Internal {
// ----------------------------------------------------------------------
// QbsNodeTreeBuilder:
// ----------------------------------------------------------------------
class QbsBuildSystem;
class QbsProjectNode;
class QbsNodeTreeBuilder
{
public:
static std::unique_ptr<QbsRootProjectNode> buildTree(QbsBuildSystem *project);
static std::unique_ptr<QbsProjectNode> buildTree(const QbsBuildSystem *buildSystem);
};
} // namespace Internal