CMake で条件分岐
CMake では条件分岐する場合、大体次の条件を使うみたい。
- ある変数が定義されているかどうか
- ある変数の値が真かどうか
変数が定義されているかどうか
DEFINED という命令もあるんだけどなんか思ってたのと違うらしくここで使うものじゃないみたい。
単純に変数名を書けばよいらしい。
if(variable-name)
# commands
endif()
ある変数が定義されていないことを調べたい場合は NOT を使って反転させる
if(NOT variable-name)
# commands
endif()
ある変数の値が真かどうか
ある変数の中身を ${} を使って展開して、それを評価する。偽であることを確かめたい場合は NOT を使う。
if (${variable-name})
# commands
endif()
if (NOT ${variable-name})
# commands
endif()
変数を評価した際に、真と判定される値は次。
大文字小文字を区別しない。
- 0 以外の数
- ON
- TRUE
- Y
- YES
上記以外の値は偽と判定される。
使いどころ
条件分岐を定義しておくとコマンドラインから動作を指定できるようになる。
次のようなスクリプトを組んでおく。
# snip
if(debug)
message("debug on")
endif()
で、次のように cmake コマンドを打つ際に -D で変数を定義するとフローを変更できる。
この場合 on はいらないんだけど何かしら指定しないとダメなので。別に a でもいい。
cmake -Ddebug=on .
Author And Source
この問題について(CMake で条件分岐), 我々は、より多くの情報をここで見つけました https://qiita.com/janus_wel/items/adb2f9f9623a1fde0860著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .