2017-02-20 14 views
1

私はいくつかのキャッシュされた変数を設定する設定ファイルを使いたいと思います。その目的は、マシン上で実行されているすべてのプロジェクトに対して、テストまたは特別な目的で別のライブラリバージョンを選択するために、そのライブラリを再利用することです。CMakeプロジェクトのユーザー固有の設定を読み込む方法

私はこの1つのようなファイルCMakeのとそれを達成することができます:

set(path_to_lib_one path/to/lib/one) 
set(option1 dont_want_to_bother_setting_this_option) 
set(option2 that_option_have_to_be_set_again) 

そしてinclude(myConfigfile)を呼び出します。

しかし、私はそれらがキャッシュのようなやり方であり、ユーザー/セットアップ固有の構成を管理するベストプラクティスは何かを知りたいと思います。

答えて

1

CMakeが提供する初期キャッシュオプションを使用します。あなたは適切なフォーマット(set with cache`に)にあなたのオプションを保存し、

cmake -C <cacheFile> <pathToSourceDir> 

自己完結型の例を呼び出すCMakeLists.txt

のように見え、あなたは3あらかじめ設定したいです変数。 cacheFile.txt

set(path_to_lib_one path/to/lib/one CACHE FILEPATH "some path") 
set(option1 "dont_want_to_bother_setting_this_option" CACHE STRING "some option 1") 
set(option2 42 CACHE INT "and an integer") 

のように見え、(ソースディレクトリ以下のディレクトリbuildから)あなたのcmakeのコール

cmake -C cacheFile.txt .. 

出力は

loading initial cache file ../cacheFile.txt 
[..] 
path/to/lib/one/dont_want_to_bother_setting_this_option/42 

ドキュメントです: https://cmake.org/cmake/help/latest/manual/cmake.1.html#options

負荷ex ternalキャッシュファイル

さらに、CMakeは別のプロジェクトで作成されたキャッシュファイルを読み込む方法を提供します。コマンドはload_cacheです。これを使用すると、外部キャッシュから変数をロードするだけでなく、現在のプロジェクトのキャッシュに変数をコピーすることもできます。

ドキュメント:>指定したファイルには、CACHEオプションではなく、キャッシュ形式のファイルを使用するSETコマンドを含むCMakeのスクリプトは次のようになります。ご指摘のdocからhttps://cmake.org/cmake/help/latest/command/load_cache.html

+0

。 – jvtrudel

+0

奇妙なエラー... CMakeエラー:ソースディレクトリ "D:/1-build-dev/qt-python-cmake/CMakeCache2.txt"はファイルであり、ディレクトリではありません。 – jvtrudel

+0

私は '' '' SET(...) '' 'を使っても... – jvtrudel

関連する問題