qbs build: Final steps to support building plugins "out of source".

- Use the entire Export block when creating a module, not just the
  Depends items. Adapt references to the product source directory
  and the "share" directory so that they point to the respective
  locations in the install tree.
- Install dev headers for some more plugins.
- Bug fixes & polishing.

Create a "dev installation" like this:
$ qbs qtc.make_dev_package:true qbs.installRoot:<install root>

Then build your plugin against it like this:
$ qbs qtc.make_dev_package:true qbs.installRoot:<install root>
project.qbsSearchPaths:<install root>/qbs-resources
(Using qbs from 1.5 branch; 1.5.1 requires a trivial wrapper project.)

That's all. Successfully tested with all commercial plugins on Linux.

Change-Id: Ie39c4717dafcd431c533421a15f2f898783d8521
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Christian Kandeler
2016-06-10 17:51:22 +02:00
parent 96a3d49b07
commit e1e203598d
9 changed files with 409 additions and 393 deletions

View File

@@ -1,84 +1,86 @@
import qbs 1.0
QtcLibrary {
Project {
name: "QmlJS"
cpp.defines: base.concat([
"QMLJS_BUILD_DIR"
])
cpp.optimization: "fast"
QtcDevHeaders { }
Depends { name: "ExtensionSystem" }
Depends { name: "Utils" }
Depends { name: "LanguageUtils" }
Depends { name: "CPlusPlus" }
Depends { name: "Qt"; submodules: ["widgets", "xml"] }
QtcLibrary {
cpp.defines: base.concat(["QMLJS_BUILD_DIR"])
cpp.optimization: "fast"
Group {
name: "General"
files: [
"jsoncheck.cpp", "jsoncheck.h",
"persistenttrie.cpp", "persistenttrie.h",
"qmljs_global.h",
"qmljsbind.cpp", "qmljsbind.h",
"qmljsbundle.cpp", "qmljsbundle.h",
"qmljscheck.cpp", "qmljscheck.h",
"qmljscodeformatter.cpp", "qmljscodeformatter.h",
"qmljscompletioncontextfinder.cpp", "qmljscompletioncontextfinder.h",
"qmljsconstants.h",
"qmljscontext.cpp", "qmljscontext.h",
"qmljsdescribevalue.cpp", "qmljsdescribevalue.h",
"qmljsdocument.cpp", "qmljsdocument.h",
"qmljsevaluate.cpp", "qmljsevaluate.h",
"qmljsfindexportedcpptypes.cpp", "qmljsfindexportedcpptypes.h",
"qmljsicons.cpp", "qmljsicons.h",
"qmljsicontextpane.h",
"qmljsimportdependencies.cpp", "qmljsimportdependencies.h",
"qmljsindenter.cpp", "qmljsindenter.h",
"qmljsinterpreter.cpp", "qmljsinterpreter.h",
"qmljsdialect.cpp", "qmljsdialect.h",
"qmljslineinfo.cpp", "qmljslineinfo.h",
"qmljslink.cpp", "qmljslink.h",
"qmljsmodelmanagerinterface.cpp", "qmljsmodelmanagerinterface.h",
"qmljsplugindumper.cpp", "qmljsplugindumper.h",
"qmljspropertyreader.cpp", "qmljspropertyreader.h",
"qmljsqrcparser.cpp", "qmljsqrcparser.h",
"qmljsreformatter.cpp", "qmljsreformatter.h",
"qmljsrewriter.cpp", "qmljsrewriter.h",
"qmljsscanner.cpp", "qmljsscanner.h",
"qmljsscopeastpath.cpp", "qmljsscopeastpath.h",
"qmljsscopebuilder.cpp", "qmljsscopebuilder.h",
"qmljsscopechain.cpp", "qmljsscopechain.h",
"qmljssimplereader.cpp", "qmljssimplereader.h",
"qmljsstaticanalysismessage.cpp", "qmljsstaticanalysismessage.h",
"qmljstypedescriptionreader.cpp", "qmljstypedescriptionreader.h",
"qmljsutils.cpp", "qmljsutils.h",
"qmljsvalueowner.cpp", "qmljsvalueowner.h",
"qmljsviewercontext.cpp", "qmljsviewercontext.h"
]
}
Group {
name: "Parser"
prefix: "parser/"
files: [
"qmldirparser.cpp", "qmldirparser_p.h",
"qmlerror.cpp", "qmlerror.h",
"qmljsast.cpp", "qmljsast_p.h",
"qmljsastfwd_p.h",
"qmljsastvisitor.cpp", "qmljsastvisitor_p.h",
"qmljsengine_p.cpp", "qmljsengine_p.h",
"qmljsglobal_p.h",
"qmljsgrammar.cpp", "qmljsgrammar_p.h",
"qmljskeywords_p.h",
"qmljslexer.cpp", "qmljslexer_p.h",
"qmljsmemorypool_p.h",
"qmljsparser.cpp", "qmljsparser_p.h",
]
}
Export {
Depends { name: "CPlusPlus" }
Depends { name: "ExtensionSystem" }
Depends { name: "Utils" }
Depends { name: "LanguageUtils" }
Depends { name: "CPlusPlus" }
Depends { name: "Qt"; submodules: ["widgets", "xml"] }
Group {
name: "General"
files: [
"jsoncheck.cpp", "jsoncheck.h",
"persistenttrie.cpp", "persistenttrie.h",
"qmljs_global.h",
"qmljsbind.cpp", "qmljsbind.h",
"qmljsbundle.cpp", "qmljsbundle.h",
"qmljscheck.cpp", "qmljscheck.h",
"qmljscodeformatter.cpp", "qmljscodeformatter.h",
"qmljscompletioncontextfinder.cpp", "qmljscompletioncontextfinder.h",
"qmljsconstants.h",
"qmljscontext.cpp", "qmljscontext.h",
"qmljsdescribevalue.cpp", "qmljsdescribevalue.h",
"qmljsdocument.cpp", "qmljsdocument.h",
"qmljsevaluate.cpp", "qmljsevaluate.h",
"qmljsfindexportedcpptypes.cpp", "qmljsfindexportedcpptypes.h",
"qmljsicons.cpp", "qmljsicons.h",
"qmljsicontextpane.h",
"qmljsimportdependencies.cpp", "qmljsimportdependencies.h",
"qmljsindenter.cpp", "qmljsindenter.h",
"qmljsinterpreter.cpp", "qmljsinterpreter.h",
"qmljsdialect.cpp", "qmljsdialect.h",
"qmljslineinfo.cpp", "qmljslineinfo.h",
"qmljslink.cpp", "qmljslink.h",
"qmljsmodelmanagerinterface.cpp", "qmljsmodelmanagerinterface.h",
"qmljsplugindumper.cpp", "qmljsplugindumper.h",
"qmljspropertyreader.cpp", "qmljspropertyreader.h",
"qmljsqrcparser.cpp", "qmljsqrcparser.h",
"qmljsreformatter.cpp", "qmljsreformatter.h",
"qmljsrewriter.cpp", "qmljsrewriter.h",
"qmljsscanner.cpp", "qmljsscanner.h",
"qmljsscopeastpath.cpp", "qmljsscopeastpath.h",
"qmljsscopebuilder.cpp", "qmljsscopebuilder.h",
"qmljsscopechain.cpp", "qmljsscopechain.h",
"qmljssimplereader.cpp", "qmljssimplereader.h",
"qmljsstaticanalysismessage.cpp", "qmljsstaticanalysismessage.h",
"qmljstypedescriptionreader.cpp", "qmljstypedescriptionreader.h",
"qmljsutils.cpp", "qmljsutils.h",
"qmljsvalueowner.cpp", "qmljsvalueowner.h",
"qmljsviewercontext.cpp", "qmljsviewercontext.h"
]
}
Group {
name: "Parser"
prefix: "parser/"
files: [
"qmldirparser.cpp", "qmldirparser_p.h",
"qmlerror.cpp", "qmlerror.h",
"qmljsast.cpp", "qmljsast_p.h",
"qmljsastfwd_p.h",
"qmljsastvisitor.cpp", "qmljsastvisitor_p.h",
"qmljsengine_p.cpp", "qmljsengine_p.h",
"qmljsglobal_p.h",
"qmljsgrammar.cpp", "qmljsgrammar_p.h",
"qmljskeywords_p.h",
"qmljslexer.cpp", "qmljslexer_p.h",
"qmljsmemorypool_p.h",
"qmljsparser.cpp", "qmljsparser_p.h",
]
}
Export {
Depends { name: "CPlusPlus" }
Depends { name: "LanguageUtils" }
}
}
}