Skip to content

Commit

Permalink
Added support for Qt qbs
Browse files Browse the repository at this point in the history
  • Loading branch information
Psy-Kai committed Jan 23, 2017
1 parent 73b374f commit b9fc71a
Show file tree
Hide file tree
Showing 14 changed files with 348 additions and 0 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
*.pro.user*
*.qbs.user*
debug
release
*.autosave
9 changes: 9 additions & 0 deletions examples/examples.qbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import qbs

Project {
name: "Examples"

references: [
"mqtt"
]
}
28 changes: 28 additions & 0 deletions examples/mqtt/client/client.qbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import qbs

QtApplication {
name: "Client"
targetName: "qmqtt_example"

files: [
"example.cpp"
]

Depends {
name: "Qt"
submodules: [
"core",
"network",
]
}

Depends {
name: "qmqtt"
}

Group {
fileTagsFilter: "application"
qbs.install: true
qbs.installDir: "bin"
}
}
9 changes: 9 additions & 0 deletions examples/mqtt/mqtt.qbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import qbs

Project {
name: "mqtt"

references: [
"client"
]
}
11 changes: 11 additions & 0 deletions qmqtt.qbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import qbs

Project {
name: "QMQTT"

references: [
"examples",
"src",
"tests",
]
}
111 changes: 111 additions & 0 deletions src/mqtt/mqtt.qbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
import qbs
import qbs.TextFile

Product {
name: "qmqtt"
type: [
libraryType,
"mqttmodule",
]
property string libraryType: "dynamiclibrary"
targetName: "qmqtt"

cpp.defines: [
"QT_BUILD_MQTT_LIB",
"QT_NO_CAST_TO_ASCII",
"QT_NO_CAST_FROM_ASCII",
]

cpp.includePaths: sourceDirectory

files: [
"*.cpp",
"*_p.h",
]

Group {
name: "Public Headers"
fileTags: [
"hpp",
"public_headers"
]
files: [
"*.h"
]
excludeFiles: parent.files
}

Group {
name: "mqtt Module Template"
fileTags: [
"mqttmoduletemplate"
]
files: "mqttModule.qbs"
}

Group {
fileTagsFilter: libraryType
qbs.install: true
qbs.installDir: "lib"
}

Group {
fileTagsFilter: "public_headers"
qbs.install: true
qbs.installDir: "include/"+product.name
}

Rule {
/* TODO: copy mqtt-module in module directory */
inputs: "mqttmoduletemplate"
Artifact {
filePath: "mqtt/"+input.fileName
fileTags: "mqttmodule"
}
prepare: {
var cmd = new JavaScriptCommand();
cmd.description = "Create Mqtt Module";
cmd.highlight = "codegen";
cmd.sourceCode = function() {
var file = new TextFile(input.filePath);
var content = file.readAll();
file.close()
content = content.replace(/dummyIncludePath/g, '"'+input.moduleProperty("qbs", "installRoot")+'/include/'+product.targetName+'"');
content = content.replace(/dummyLibraryPath/g, '"'+input.moduleProperty("qbs", "installRoot")+'/lib"');
content = content.replace(/dummyLibrary/g, product.libraryType === "dynamiclibrary" ? "dynamicLibraries" : "staticLibraries");
file = new TextFile(output.filePath, TextFile.WriteOnly);
file.write(content);
file.close();
}
return cmd;
}
}

Depends {
name: "cpp"
}

Depends {
name: "Qt"
submodules: [
"core",
"network",
]
}

Export {
Depends {
name: "cpp"
}

Depends {
name: "Qt"
submodules: [
"core",
"network",
]
}

cpp.includePaths: product.sourceDirectory
}
}
19 changes: 19 additions & 0 deletions src/mqtt/mqttModule.qbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import qbs

Module {
Depends {
name: "cpp"
}

Depends {
name: "Qt"
submodules: [
"core",
"network",
]
}

cpp.includePaths: dummyIncludePath
cpp.libraryPaths: dummyLibraryPath
cpp.dummyLibrary: "mqtt"
}
9 changes: 9 additions & 0 deletions src/src.qbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import qbs

Project {
name: "Sources"

references: [
"mqtt/mqtt.qbs"
]
}
9 changes: 9 additions & 0 deletions tests/auto/auto.qbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import qbs

Project {
name: "Auto"

references: [
"cmake"
]
}
6 changes: 6 additions & 0 deletions tests/auto/cmake/cmake.qbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import qbs

/* TODO: add cmake test */
Product {
name: "CMake"
}
25 changes: 25 additions & 0 deletions tests/gtest/gtest.qbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import qbs

Project {
name: "GTest"
property bool runUnitTests: true

references: [
"gtest",
"tests",
]

AutotestRunner {
condition: runUnitTests && qbs.targetOS.contains("unix")

Properties {
condition: qbs.targetOS.contains("macx")

/* TODO: if needed, add "install_name_tool" usage */
}

Depends {
name: "Google-Test"
}
}
}
40 changes: 40 additions & 0 deletions tests/gtest/gtest/gtest.qbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import qbs

DynamicLibrary {
name: "Google-Test"
targetName: "gtest"

cpp.defines: [
"GTEST_LIBRARY"
]

files: [
"googletest/googletest/src/gtest-all.cc",
"googletest/googlemock/src/gmock-all.cc",
]

cpp.includePaths: [
"googletest/googletest/include",
"googletest/googletest",
"googletest/googlemock/include",
"googletest/googlemock",
]

Depends {
name: "Qt"
submodules: [
"core"
]
}

Export {
Depends {
name: "cpp"
}

cpp.includePaths: [
"googletest/googletest/include",
"googletest/googlemock/include",
]
}
}
53 changes: 53 additions & 0 deletions tests/gtest/tests/tests.qbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import qbs
import qbs.Process

Product {
name: "Tests"
type: [
"application",
]
targetName: "qmqtt_tests"

cpp.defines: [
"QMQTT_LIBRARY_TESTS"
]

files: [
"clienttest.cpp",
"tcpserver.cpp",
"main.cpp",
"customprinter.cpp",
"networktest.cpp",
"messagetest.cpp",
"frametest.cpp",
"sockettest.cpp",
"tcpserver.h",
"customprinter.h",
"networkmock.h",
"socketmock.h",
"timermock.h",
"iodevicemock.h",
]

Depends {
name: "Qt"
submodules: [
"core",
"network",
"testlib",
]
}

Depends {
name: "Google-Test"
}

Depends {
name: "qmqtt"
}

Depends {
/* TODO: if needed, create mqtt-private */
name: "mqtt-private"
}
}
18 changes: 18 additions & 0 deletions tests/tests.qbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import qbs

Project {
name: "Tests"
/* NOTE: to change this just add "Tests.buildUnitTests:false" or "Tests.buildUnitTests:true" to qbs call */
property bool buildUnitTests: true

references: [
"auto"
]

SubProject {
filePath: "gtest/gtest.qbs"
Properties {
condition: qbs.targetOS.contains("unix") && buildUnitTests
}
}
}

0 comments on commit b9fc71a

Please sign in to comment.