From c8e656c506e22d62968ae2a5adf09c96f49efe12 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 18 Jul 2019 12:55:43 +0200 Subject: [PATCH] Add qbs support to library wizard Change-Id: Id78bc547cf42dec8948d7ebca56eacfcbbd2f055 Reviewed-by: Christian Stenger --- .../wizards/projects/cpplibrary/project.qbs | 59 +++++++++++++++++++ .../wizards/projects/cpplibrary/wizard.json | 17 +++++- 2 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 share/qtcreator/templates/wizards/projects/cpplibrary/project.qbs diff --git a/share/qtcreator/templates/wizards/projects/cpplibrary/project.qbs b/share/qtcreator/templates/wizards/projects/cpplibrary/project.qbs new file mode 100644 index 00000000000..0e5df73e84f --- /dev/null +++ b/share/qtcreator/templates/wizards/projects/cpplibrary/project.qbs @@ -0,0 +1,59 @@ +import qbs.FileInfo + +@if %{IsStatic} +StaticLibrary { +@else +DynamicLibrary { +@endif +@if '%{QtModule}' === 'none' + Depends { name: "cpp" } +@else + Depends { name: "Qt.%{QtModule}" } +@endif + + cpp.cxxLanguageVersion: "c++11" + cpp.defines: [ +@if %{IsShared} + "%{LibraryDefine}", +@endif +@if %{IsQtPlugin} + "QT_PLUGIN", +@endif + + // The following define makes your compiler emit warnings if you use + // any Qt feature that has been marked deprecated (the exact warnings + // depend on your compiler). Please consult the documentation of the + // deprecated API in order to know how to port your code away from it. + "QT_DEPRECATED_WARNINGS", + + // You can also make your code fail to compile if it uses deprecated APIs. + // In order to do so, uncomment the following line. + // You can also select to disable deprecated APIs only up to a certain version of Qt. + // "QT_DISABLE_DEPRECATED_BEFORE=0x060000", // disables all the APIs deprecated before Qt 6.0.0 + ] + + files: [ + "%{SrcFileName}", +@if %{IsShared} + "%{GlobalHdrFileName}", +@endif + "%{HdrFileName}", +@if %{IsQtPlugin} + "%{PluginJsonFile}", +@endif + ] + +@if '%{TargetInstallPath}' != '' + // Default rules for deployment. + qbs.installPrefix: "" + Properties { + condition: qbs.targetOS.contains("unix") + install: true +@if %{IsQtPlugin} + installDir: FileInfo.joinPaths(Qt.core.pluginPath, "%{PluginTargetPath}") +@else + installDir: "%{TargetInstallPath}" +@endif + } +@endif +} diff --git a/share/qtcreator/templates/wizards/projects/cpplibrary/wizard.json b/share/qtcreator/templates/wizards/projects/cpplibrary/wizard.json index e61048a4b64..8f4c264499c 100644 --- a/share/qtcreator/templates/wizards/projects/cpplibrary/wizard.json +++ b/share/qtcreator/templates/wizards/projects/cpplibrary/wizard.json @@ -1,6 +1,6 @@ { "version": 1, - "supportedProjectTypes": [ "CMakeProjectManager.CMakeProject", "Qt4ProjectManager.Qt4Project" ], + "supportedProjectTypes": [ "CMakeProjectManager.CMakeProject", "Qbs.QbsProject", "Qt4ProjectManager.Qt4Project" ], "id": "H.CppLibrary", "category": "G.Library", "trDescription": "Creates a C++ library. This can be used to create:", @@ -11,8 +11,8 @@ "options": [ - { "key": "ProjectFile", "value": "%{JS: value('BuildSystem') === 'qmake' ? value('ProFile') : value('CMakeFile')}" }, - { "key": "ProFile", "value": "%{JS: Util.fileName(value('ProjectDirectory') + '/' + value('ProjectName'), 'pro')}" }, + { "key": "ProjectFile", "value": "%{JS: value('BuildSystem') === 'cmake' ? value('CMakeFile') : value('ProFile')}" }, + { "key": "ProFile", "value": "%{JS: Util.fileName(value('ProjectDirectory') + '/' + value('ProjectName'), value('BuildSystem') === 'qmake' ? 'pro' : 'qbs')}" }, { "key": "CMakeFile", "value": "%{ProjectDirectory}/CMakeLists.txt" }, { "key": "PluginJsonFile", "value": "%{JS: Util.fileName(value('ProjectName'), 'json')}" }, { "key": "IsShared", "value": "%{JS: value('Type') === 'shared'}" }, @@ -67,6 +67,11 @@ "trKey": "CMake", "value": "cmake", "condition": "%{JS: value('Plugins').indexOf('CMakeProjectManager') >= 0}" + }, + { + "trKey": "Qbs", + "value": "qbs", + "condition": "%{JS: value('Plugins').indexOf('QbsProjectManager') >= 0}" } ] } @@ -291,6 +296,12 @@ "openAsProject": true, "condition": "%{JS: value('BuildSystem') === 'qmake'}" }, + { + "source": "project.qbs", + "target": "%{ProFile}", + "openAsProject": true, + "condition": "%{JS: value('BuildSystem') === 'qbs'}" + }, { "source": "CMakeLists.txt", "openAsProject": true,