2016-07-14 3 views
0

I durch QBS 1.5.1, Qt 5.6.1, Qt Creator 4.0.1QBS qestion über Bibliothek relativen Pfad und wie eine Eigenschaft Zeichenfolge wiederzuverwenden

ich zur Zeit erzeugt mehrere Bibliotheken in einem Projekt zu verwenden, versuche haben mehrere Fragen zum QT-Bauanzug.

Erste Frage: Wie kann ich eine Eigenschaftszeichenfolge wiederverwenden? Ich habe beispielsweise versucht, ein Produkt zu definieren, das einige Zeichenfolgeneigenschaften enthält, und versucht, diese Eigenschaften an anderen Stellen innerhalb des Projekts wiederzuverwenden.

// defines the qbs file in subfolder settings/settings.qbs 
import qbs 

Product 
{ 
    name: 'config' 
    property string p1 : 'path1'   // <- define p1 
    property string p2: p1 + '/path2'  // <- define p2 
} 

und zu versuchen, die Eigenschaften zu verwenden:

i. Die settings.qbs zu root project.qbs hinzugefügt

import qbs 
import qbs.File 

Project{ 
    references:{ 
    ..., 
    "settings/settings.qbs" 
    } 
} 

ii. In einem anderen Ordner, die die Anwendung

// application/app.qbs 
import qbs 

CppApplication{ 
    type: "application" 
    name: "myapp" 

    Depends {name: "cpp"} 
    Depends {name: "config"} 

    cpp.libraryPaths [config.p1, config.p2] // <- use p1 and p2 in a different qbs file 
} 

halten Aber wenn ich

qbs debug 

im Repository root ausführen, wird die Eigenschaft String-Wert 'undefined'.

Die zweite Frage ist der relative Pfad. Es scheint, dass ich einen relativen Pfad in Dateien verwenden kann: [], aber wenn ich den relativen Pfad in cpp.dynamicLibraries oder cpp.staticLibraries verwende, kann der Compiler die Bibliotheken nicht basierend auf dem relativen Pfad finden. Aber wenn ich einen absoluten Pfad verwende, funktioniert es. Habe ich etwas verpasst?

Vielen Dank für Ihre Hilfe :)

Rong

Antwort

1

Sie können Eigenschaften wie die Referenz. Sie müssen QML-Vererbung verwenden oder eine JavaScript-Datei importieren. Beispielsweise können Sie JS-Code in separate .js-Dateien einfügen und sie dann importieren. https://doc.qt.io/qbs/language-introduction.html#reusing-project-file-code


Habe ich nicht die Bibliotheken anderswo Frage:

---helpers.js--- 
function planetsCorrectlyAligned() 
{ 
    // implementation 
} 

---myproject.qbs--- 
import qbs 1.0 
import "helpers.js" as Helpers 

Product { 
    name: "myproject" 
    Group { 
     condition: Helpers.planetsCorrectlyAligned() 
     file: "magic_hack.cpp" 
    } 
    // ... 
} 

Diese Syntax hierfür ist bei der qBS Dokumentation detailliert? Bitte fügen Sie dem gleichen Post auch nicht mehrere Fragen hinzu. So funktioniert Stack Overflow nicht.