ここで条件付き関数とスコープを使用できます。
QT_VERSION = 5 # this can be 4, set manually
equals(QT_VERSION, 5){
QT += widgets
}
equals(QT_VERSION, 4) {
QT += gui
}
ただし、元のコードには注意が必要な点がいくつかあります。
Qt のバージョンを明示的に定義する必要はありません。.pro ファイルでバージョンを変更するのを忘れると、頭痛の種になる可能性があります。代わりに、qmake が自動的に変数QT_MAJOR_VERSION
を定義します。
equals
この場合、を使用すると機能します。ただし、後述するようにequals
、文字列比較を実行します。ただし、(将来どこかで) Qt 6 でコンパイルしようとすると、コードが自動的に動作を停止するため、greaterThan
andを使用することをお勧めします。lessThan
デフォルトで含まれているため、 に追加gui
する必要はありません。QT
したがって、コードは次のようになります。
greaterThan(QT_MAJOR_VERSION, 4) {
QT += widgets
}
ここに文書化されていないqmake
宝石がいくつかあります:
defined(func, type)
func
が定義されている場合は true を返します。またはと一致させるには、タイプを または のいずれtest
かにする必要があります。replace
defineTest
defineReplace
equals(var1, var)
(としても機能しますisEqual
)。
var1 が var2 と等しい場合に true を返します (文字列比較)。
lessThan(var1, var2)`
が(整数として)var1
より小さい場合に true を返します。var2
greaterThan(var1, var2)
が(整数として)var1
より大きい場合に true を返します。var2
inFile(file, var, val)
var
指定されたファイルで変数が定義されている場合は true を返します。さらに、要求された値があるかどうかをテストできます。
load(string)
include()
との間のクロスのようなものCONFIG += [feature]
。load(foo)
標準機能パスで「foo.prf」というファイルを探し、その内容をすぐに実行します。に含まれる機能はCONFIG
、「.pro」ファイルの処理が終了した後、最後に実行されます。のようinclude()
に、ファイルが見つかった場合は true を返します。