aboutsummaryrefslogtreecommitdiffstats
path: root/tutorial/chapter-9/qbs
diff options
context:
space:
mode:
Diffstat (limited to 'tutorial/chapter-9/qbs')
-rw-r--r--tutorial/chapter-9/qbs/imports/MyApplication.qbs10
-rw-r--r--tutorial/chapter-9/qbs/imports/MyAutoTest.qbs3
-rw-r--r--tutorial/chapter-9/qbs/imports/MyLibrary.qbs26
-rw-r--r--tutorial/chapter-9/qbs/modules/mybuildconfig/mybuildconfig.qbs30
4 files changed, 69 insertions, 0 deletions
diff --git a/tutorial/chapter-9/qbs/imports/MyApplication.qbs b/tutorial/chapter-9/qbs/imports/MyApplication.qbs
new file mode 100644
index 000000000..451065190
--- /dev/null
+++ b/tutorial/chapter-9/qbs/imports/MyApplication.qbs
@@ -0,0 +1,10 @@
+CppApplication {
+ Depends { name: "mybuildconfig" }
+ version: mybuildconfig.productVersion
+
+ cpp.rpaths: mybuildconfig.libRPaths
+ consoleApplication: true
+ installDir: mybuildconfig.appInstallDir
+ install: true
+ installDebugInformation: project.installDebugInformation
+}
diff --git a/tutorial/chapter-9/qbs/imports/MyAutoTest.qbs b/tutorial/chapter-9/qbs/imports/MyAutoTest.qbs
new file mode 100644
index 000000000..1faecdc33
--- /dev/null
+++ b/tutorial/chapter-9/qbs/imports/MyAutoTest.qbs
@@ -0,0 +1,3 @@
+MyApplication {
+ type: ["application", "autotest"]
+}
diff --git a/tutorial/chapter-9/qbs/imports/MyLibrary.qbs b/tutorial/chapter-9/qbs/imports/MyLibrary.qbs
new file mode 100644
index 000000000..9f2590f50
--- /dev/null
+++ b/tutorial/chapter-9/qbs/imports/MyLibrary.qbs
@@ -0,0 +1,26 @@
+// ![0]
+Library {
+ Depends { name: "cpp" }
+ Depends { name: "mybuildconfig" }
+ type: mybuildconfig.staticBuild ? "staticlibrary" : "dynamiclibrary"
+ version: mybuildconfig.productVersion
+ install: !mybuildconfig.staticBuild || mybuildconfig.installStaticLib
+ installDir: mybuildconfig.libInstallDir
+
+ readonly property string _nameUpper : name.replace(" ", "_").toUpperCase()
+ property string libraryMacro: _nameUpper + "_LIBRARY"
+ property string staticLibraryMacro: _nameUpper + "_STATIC_LIBRARY"
+ cpp.defines: mybuildconfig.staticBuild ? [staticLibraryMacro] : [libraryMacro]
+ cpp.sonamePrefix: qbs.targetOS.contains("darwin") ? "@rpath" : undefined
+
+ Export {
+ Depends { name: "cpp" }
+ cpp.includePaths: [exportingProduct.sourceDirectory]
+ cpp.defines: exportingProduct.mybuildconfig.staticBuild
+ ? [exportingProduct.staticLibraryMacro] : []
+ }
+
+ Depends { name: "bundle" }
+ bundle.isBundle: false
+}
+// ![0]
diff --git a/tutorial/chapter-9/qbs/modules/mybuildconfig/mybuildconfig.qbs b/tutorial/chapter-9/qbs/modules/mybuildconfig/mybuildconfig.qbs
new file mode 100644
index 000000000..7aed8f7eb
--- /dev/null
+++ b/tutorial/chapter-9/qbs/modules/mybuildconfig/mybuildconfig.qbs
@@ -0,0 +1,30 @@
+import qbs.FileInfo
+
+//! [0]
+// qbs/modules/mybuildconfig/mybuildconfig.qbs
+Module {
+ Depends { name: "cpp" }
+
+ property string productVersion: "1.0.0"
+ // ...
+ //! [0]
+ property string appInstallDir: "bin"
+ property string libDirName: "lib"
+ property string libInstallDir: qbs.targetOS.contains("windows") ? "bin" : libDirName
+ property bool staticBuild: false
+ property bool installStaticLib: true
+ property bool enableRPath: true
+
+ property stringList libRPaths: {
+ if (enableRPath && cpp.rpathOrigin && product.installDir) {
+ return [
+ FileInfo.joinPaths(
+ cpp.rpathOrigin,
+ FileInfo.relativePath(
+ FileInfo.joinPaths('/', product.installDir),
+ FileInfo.joinPaths('/', libDirName)))
+ ];
+ }
+ return [];
+ }
+}