web-dev-qa-db-ja.com

コマンドプロンプト経由で引数をCMAKEに渡す

私は自分のプロジェクト用のメイクファイルを持っています。また、引数を渡し、その引数に基づいてフラグを設定しています。これができます。しかし、今私はcmakeを使用して同じことをしたいです。 cmakelist.txtを作成しましたが、引数を渡し、cmakelist.txtの引数値を確認する方法がわかりません。

私のメイクファイルのサンプル:

ifeq "$(FAB)" "po"
      //setting some flags
else
      //setting some iother flag
endif

コマンドプロンプトから引数を取り、それに基づいてフラグを設定する方法は何ですか?

44
Meluha

CMakeLists.txtファイルで、ここに記載されているようにキャッシュ変数を作成します。

SET(FAB "po" CACHE STRING "Some user-specified option")

ソース: http://cmake.org/cmake/help/v2.8.8/cmake.html#command:set

次に、GUI(ccmakeまたはcmake-gui)を使用してキャッシュ変数を設定するか、cmakeコマンドラインで変数の値を指定します。

cmake -DFAB:STRING=po

ソース: http://cmake.org/cmake/help/v2.8.8/cmake.html#opt:-Dvar:typevalue

実際にオプションがブール値の場合、キャッシュ変数をブール値に変更します。

66
Peter

buntu 16.04のCMake 3.1

このアプローチは、MY_VARIABLEを型に制約しないため、より柔軟です。

$ cat CMakeLists.txt 
message("MY_VARIABLE=${MY_VARIABLE}")
if( MY_VARIABLE ) 
    message("MY_VARIABLE evaluates to True")
endif()

$ mkdir build && cd build

$ cmake ..
MY_VARIABLE=
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/build

$ cmake .. -DMY_VARIABLE=True
MY_VARIABLE=True
MY_VARIABLE evaluates to True
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/build

$ cmake .. -DMY_VARIABLE=False
MY_VARIABLE=False
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/build

$ cmake .. -DMY_VARIABLE=1
MY_VARIABLE=1
MY_VARIABLE evaluates to True
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/build

$ cmake .. -DMY_VARIABLE=0
MY_VARIABLE=0
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/build
6
PJ_Finnegan