0

qbs 1.5.1、Qt 5.6.1、Qt Creator 4.0.1 で生成されたプロジェクトで複数のライブラリを使用しようとしています。

現在、qt ビルド スーツに関していくつか質問があります。

最初の質問: プロパティ文字列を再利用するにはどうすればよいですか? たとえば、いくつかの文字列プロパティを含む製品を定義しようとしましたが、それらのプロパティをプロジェクト内の他の場所で再利用しようとしました。

// 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
}

そして、プロパティを使用しようとします:

私。settings.qbs をルート project.qbs に追加しました

import qbs
import qbs.File

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

ii. アプリケーションを保持している別のフォルダー

// 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
}

しかし、私が走るとき

qbs debug

リポジトリ ルートでは、プロパティ文字列の値は「未定義」です。

2 番目の質問は相対パスです。files:[] で相対パスを使用できるようですが、cpp.dynamicLibraries または cpp.staticLibraries で相対パスを使用すると、コンパイラは相対パスに基づいてライブラリを見つけることができません。しかし、絶対パスを使用すると機能します。私は何かを逃しましたか?

ご協力いただきありがとうございます :)

ロン

4

1 に答える 1

1

そのようなプロパティを参照することはできません。QML 継承を使用するか、JavaScript ファイルをインポートする必要があります。たとえば、JS コードを個別の .js ファイルに入れてからインポートできます。

---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"
    }
    // ...
}

この構文は、https ://doc.qt.io/qbs/language-introduction.html#reusing-project-file-code の Qbs ドキュメントで詳しく説明されています。


他の場所で図書館の質問に答えませんでしたか? また、同じ投稿に複数の質問を追加しないでください。それは Stack Overflow の仕組みではありません。

于 2016-07-14T14:23:52.867 に答える