2017-04-06 15 views
0

srcのテストフォルダを含むC++プロジェクトのエントリを持つCMakelist.txtファイルを調べていました。 次の構文の意味は何ですか?CMakelist - if(DEFINED)構文

if(DEFINED BUILD_TESTS) 
    add_subdirectory(tests) 
endif(DEFINED BUILD_TESTS) 

おかげ rGに

答えて

3

私はそれがここに明らかだと思うけれどもあなたはいつも、manualを確認することができます。

if(DEFINED BUILD_TESTS) 

チェックを変数BUILD_TESTSが環境に定義されている場合。もしそうなら,:

add_subdirectory(tests) 

add_subdirectoryは、コンパイル/ビルドするために必要なもののリストにテスト(驚き)と呼ばれるディレクトリを追加すること(cmakeのは、それらを持っている)built in functionです。

BUILD_TESTS自身がCMAKE変数であり、 'tests'がMakefileの一部であるかどうかを判断します。これを指摘してくれてありがとう@ Tsyvarev。

+0

ご連絡ありがとうございます。私はどこに "BUILD_TESTS"が定義されているのか知りません。それは問題です。私はたくさん知っていない全く新しいプロジェクトを進めています。 –

+0

これは 'make 'の実行の前/中にこれを定義したように'環境 'をチェックします。これは、設定ファイル、Makefile自体、またはシェルの中で行うことができます。そうしないと、Makefileはテストをビルドしたくないとみなします。別のオプションは 'make 'を実行するときに' BUILD_TESTS = 1'を置くことです。定義されていないのは、完全に実行可能なオプションです。 – kabanus

+0

@kabanus:式 'DEFINED BUILD_TESTS'は、** CMake変数**のみをチェックし、環境変数は調べません。 – Tsyvarev