コマンドプロンプト経由で引数をCMAKEに渡す
私は自分のプロジェクト用のメイクファイルを持っています。また、引数を渡し、その引数に基づいてフラグを設定しています。これができます。しかし、今私はcmakeを使用して同じことをしたいです。 cmakelist.txt
を作成しましたが、引数を渡し、cmakelist.txt
の引数値を確認する方法がわかりません。
私のメイクファイルのサンプル:
ifeq "$(FAB)" "po"
//setting some flags
else
//setting some iother flag
endif
コマンドプロンプトから引数を取り、それに基づいてフラグを設定する方法は何ですか?
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
実際にオプションがブール値の場合、キャッシュ変数をブール値に変更します。
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